我正试图通过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/