任一進程都可以得到其實際和有效用戶ID及組ID。但是有時希望找到運行該程序的用戶登錄名。我們可以調用getpwuid(getuid()),但是如果一個用戶有多個登錄名,這些登錄名又對應著同一個用戶ID,那么又將如何呢?(一個人在口令文件中可以有多個登錄項,它們的用戶ID相同,但登錄shell則不同。) 系統通常記錄用戶登錄時使用的名字,用getlogin函數可以獲取此登錄名。
#include <unistd.h>char *getlogin(void);返回值:若成功則返回指向登錄名字符串的指針,若出錯則返回NULL
如果調用此函數的進程沒有連接到用戶登錄時所用的終端,則本函數會失敗。通常稱這些進程為守護進程(daemon)(以后討論)。
給出了登錄名,就可用getpwnam在口令文件中查找用戶的相應記錄,從而確定其登錄shell等。
本篇博文內容摘自《UNIX環境高級編程》(第二版),僅作個人學習記錄所用。關于本書可參考:http://www.apuebook.com/。
新聞熱點
疑難解答