在linux中,如果我只有用户名,如何获取用户ID?我用man getuid,但找不到任何关于它的线索.EDIT1:对不起,我想通过api获取用户ID.我不喜欢分支另一个进程来调用系统函数.
您可以使用getpwnam获取指向struct passwd具有pw_uid成员的结构的指针.示例程序:
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
#include <pwd.h>
int main(int argc, char *argv[])
{
const char *name = "root";
struct passwd *p;
if (argc > 1) {
name = argv[1];
}
if ((p = getpwnam(name)) == NULL) {
perror(name);
return EXIT_FAILURE;
}
printf("%d\n", (int) p->pw_uid);
return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)
如果您想要一个可重入的功能,请查看getpwnam_r.
只需使用 id 命令
id username
[root@my01 ~]# id sylvain
uid=1003(sylvain) gid=1005(sylvain) groups=1005(sylvain)
Run Code Online (Sandbox Code Playgroud)