在linux中,如果我只有用户名,如何获取用户ID?我用man getuid,但找不到任何关于它的线索。 EDIT1: 对不起,我想通过api获取用户ID。我不喜欢分支另一个进程来调用系统函数。
答案 0 :(得分:6)
您可以使用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;
}
如果您想要重入函数,请查看getpwnam_r
。
答案 1 :(得分:3)
只需使用id命令
即可 id username
[root@my01 ~]# id sylvain
uid=1003(sylvain) gid=1005(sylvain) groups=1005(sylvain)
答案 2 :(得分:1)
所有用户名都列在/etc/passwd
中,因此您可以grep and cut:
grep username /etc/passwd | cut -f3 -d':'