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

Linux之C++获取系统用户名,第1张

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 
#include 
#include 

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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/563471.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-02
下一篇 2022-04-02

发表评论

登录后才能评论

评论列表(0条)

保存