如何通过用户名获取linux用户ID?

jas*_*lip 3 c linux

在linux中,如果我只有用户名,如何获取用户ID?我用man getuid,但找不到任何关于它的线索.EDIT1:对不起,我想通过api获取用户ID.我不喜欢分支另一个进程来调用系统函数.

Alo*_*hal 7

您可以使用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.


Syl*_*wit 5

只需使用 id 命令

id username

[root@my01 ~]# id sylvain
uid=1003(sylvain) gid=1005(sylvain) groups=1005(sylvain)
Run Code Online (Sandbox Code Playgroud)