8.15 用户标识

8.15 用户标识

任一进程都可以得到其实际和有效用户I D及组I D。但是有时希望找到运行该程序的用户的登录名。我们可以调用getpwuid(getuid( ) ),但是如果一个用户有多个登录名,这些登录名又对应着同一个用户I D,那么又将如何呢?一个人在口令文件中可以有多个登录项,它们的用户I D相同,但登录s h e l l则不同。)系统通常保存用户的登录名(见6 . 7节),用getlogin函数可以存取此登录名。

#include <unistd.h>

char *getlogin(void);

//返回:若成功则为指向登录名字符串的指针,若出错则为NULL

如果调用此函数的进程没有连接到用户登录时所用的终端,则本函数会失败。通常称这些进程为精灵进程(daemon),第1 3章将对这种进程专门进行讨论。

得到了登录名,就可用getpwnam在口令文件中查找相应记录以确定其登录shell等。