首页 > 解决方案 > 如何将包含用户 ID 的 char 数组转换为 uid_t?

问题描述

我有一个包含我的用户 ID 的字符数组。我需要获取一个 uid_t 对象,以便可以使用 getpwuid(3) 查找用户名。

我的命令是./foo 1000(系统上存在名为“bar”且 ID 为 1000 的用户)。这是我的代码:

int main(int argc, char **argv) {
    struct passwd *user = getpwuid((int) argv[1]);

    printf("%s\n", user->pw_name);
}

这样做的问题是,getpwuid(3) 只接受 uid_t,并且 (int) 转换不起作用。

我很清楚我可以使用 getpwnam() 并从字符串中获取它,但我不知道如何将我的 char 数组转换为 uid_t 所以 getpwuid(3) 接受它。

标签: clinuxc11

解决方案


推荐阅读