c - 如何通过用户名获取linux用户id?

标签 c linux

在linux下,如果我只有用户名,如何获取用户id?我使用了 man getuid,但找不到任何关于它的线索。 编辑1: 抱歉,我想通过 api 获取用户 ID。我不喜欢 fork 另一个进程来执行它,例如调用系统函数。

最佳答案

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

关于c - 如何通过用户名获取linux用户id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39157675/

相关文章:

c - 如何为 SIGCHLD 制作一个信号处理程序,它将在 shell 中获取后台进程?

c - 如何确保 pthread_cond_wait() 不会错过任何 pthread_cond_signal()?

c - Select() 读取套接字

iphone - 如何从服务器(而非 Web 服务器)最好地为 >10,000 个 iPhone 客户端提供服务

c - 从文件中读取异步 I/O

c - 对多个二维数组使用 malloc 时出错

c++ - 什么时候 uint8_t ≠ unsigned char?

c - Linux - 实时显示内存使用情况

c - 如何使用 switch case 在 C 中退出控制台应用程序?

linux - Linux 中的扩展 Ascii