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()
函数。