Linux之C++获取系统用户名

21 篇文章 82 订阅

0 背景

在 linux 系统上开发时,有时需要判断当前用户名,来做针对性的功能设计,比如不同用户写的日志文件路径不同,因此,本文对获取用户名方法做一个介绍

1 数据结构说明

在 passwd 结构体中含有相关的定义

struct  passwd {
	char  *pw_name;  /*user name */
	char  *pw_passwd;  /*user password */
	uid_t pw_uid;  /*user id */
	gid_t pw_gid;  /*group id */
	char  *pw_gecos;  /*user real name */
	char  *pw_dir;  /*home directory */
	char  *pw_shell;  /*shell program */
};

该结构体的定义在 unistd.h 头文件中,可通过 getpwuid(uid_t uid) 函数获取,因此可使用下边的方法进行判断

2 用户名获取

#include <unistd.h>
#include <pwd.h>
#include <iostream>

int main()
{
	struct passwd* pwd;
	uid_t userid;
	userid = getuid();
	pwd = getpwuid(userid);

	std::cout << "pw_name:" << pwd->pw_name << std::endl;
	std::cout << "pw_passwd:" << pwd->pw_passwd << std::endl;
	std::cout << "pw_uid:" << pwd->pw_uid << std::endl;
	std::cout << "pw_gid:" << pwd->pw_gid << std::endl;
	std::cout << "pw_gecos:" << pwd->pw_gecos << std::endl;
	std::cout << "pw_dir:" << pwd->pw_dir << std::endl;
	std::cout << "pw_shell:" << pwd->pw_shell << std::endl;

    return 0;
}


输出如下

pw_name:amax
pw_passwd:x
pw_uid:1000
pw_gid:1000
pw_gecos:amax,,,
pw_dir:/home/amax
pw_shell:/bin/bash
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宗而研之

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值