whoami
是一個簡單的 Linux 命令行實用程序,用于打印當前登錄用戶的用戶名
以下是 whoami
命令的源代碼:
#include<stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <pwd.h>
int main(void) {
uid_t uid;
struct passwd *pw;
uid = geteuid(); // 獲取當前進程的有效用戶ID
pw = getpwuid(uid); // 根據用戶ID查找對應的用戶信息
if (pw) {
printf("%s\n", pw->pw_name); // 打印用戶名
} else {
printf("UID %u not found in /etc/passwd\n", (unsigned int)uid);
}
return 0;
}
這段代碼首先包含了必要的頭文件,然后定義了一個 main
函數。在 main
函數中,首先調用 geteuid()
函數獲取當前進程的有效用戶ID,然后使用 getpwuid()
函數根據用戶ID查找對應的用戶信息。如果找到了用戶信息,就打印用戶名;否則,打印錯誤信息。
使用技巧:
在 shell 腳本中,可以使用 $(whoami)
或者 `whoami`
來獲取當前登錄用戶的用戶名。例如:
echo "Current user is $(whoami)"
如果你想要查看其他用戶的用戶名,可以使用 sudo
命令切換到其他用戶,然后運行 whoami
。例如:
sudo -u otheruser whoami
如果你想要在 C 程序中獲取當前登錄用戶的用戶名,可以參考上面的源代碼,使用 geteuid()
和 getpwuid()
函數。