溫馨提示×

Linux whoami命令的源碼解析和使用技巧

小樊
83
2024-09-02 16:12:15
欄目: 智能運維

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); // 根據(jù)用戶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 函數(shù)。在 main 函數(shù)中,首先調(diào)用 geteuid() 函數(shù)獲取當前進程的有效用戶ID,然后使用 getpwuid() 函數(shù)根據(jù)用戶ID查找對應的用戶信息。如果找到了用戶信息,就打印用戶名;否則,打印錯誤信息。

使用技巧:

  1. 在 shell 腳本中,可以使用 $(whoami) 或者 `whoami` 來獲取當前登錄用戶的用戶名。例如:

    echo "Current user is $(whoami)"
    
  2. 如果你想要查看其他用戶的用戶名,可以使用 sudo 命令切換到其他用戶,然后運行 whoami。例如:

    sudo -u otheruser whoami
    
  3. 如果你想要在 C 程序中獲取當前登錄用戶的用戶名,可以參考上面的源代碼,使用 geteuid()getpwuid() 函數(shù)。

0