我正试图通过C程序中的一个函数来显示我的用户ID和组ID。用户ID显示正确(501),但我的组ID不正确。当我使用命令“id-g”检查我的组ID时,我得到20,但当我使用函数在程序中运行它时,我得到值1。
这是我的密码。

int Registerpw(char **args){

    register struct passwd *pw;
    register uid_t uid;
    int c;
    register gid_t gid;
    register struct group *grp;
    grp = getgrgid(gid);

    uid = geteuid();
    pw = getpwuid(uid);


    if (pw)
    {
            printf("%d,",uid);      // userID
            printf("%d,", gid);    //groupID
            puts (pw->pw_name);
            puts(grp->gr_name);


    }
    else{
        printf("failed\n");
    }
    return 1;
}

我的输出是
501,1,USERNAME
daemon

最佳答案

您的代码只声明并定义了gid的变量,但未初始化其值。你应该给它一个正确的值:

register gid_t gid;
gid = getgid();

或者简单地说:
register gid_t gid = getgid();

关于c - 如何在C中正确显示groupID(GID)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33374735/

10-13 07:15