任一进程都可以得到其实际和有效用户ID及组ID。但是有时希望找到运行该程序的用户登录名。我们可以调用getpwuid(getuid()),但是如果一个用户有多个登录名,这些登录名又对应着同一个用户ID,那么又将如何呢?(一个人在口令文件中可以有多个登录项,它们的用户ID相同,但登录shell则不同。) 系统通常记录用户登录时使用的名字,用getlogin函数可以获取此登录名。
#include <unistd.h> char *getlogin(void); 返回值:若成功则返回指向登录名字符串的指针,若出错则返回NULL
如果调用此函数的进程没有连接到用户登录时所用的终端,则本函数会失败。通常称这些进程为守护进程(daemon)(以后讨论)。
给出了登录名,就可用getpwnam在口令文件中查找用户的相应记录,从而确定其登录shell等。
本篇博文内容摘自《UNIX环境高级编程》(第二版),仅作个人学习记录所用。关于本书可参考:http://www.apuebook.com/。