如何在C中正确显示groupID(GID)?
我试图通过C程序中的一个函数显示我的userID和groupID。用户ID显示正确(501),但我的groupID显示不正确。当我使用命令“id-g”检查我的groupID时,我得到了20,但是当我使用我的函数在程序中运行它时,我得到了值1 这是我的密码如何在C中正确显示groupID(GID)?,c,linux,unix,C,Linux,Unix,我试图通过C程序中的一个函数显示我的userID和groupID。用户ID显示正确(501),但我的groupID显示不正确。当我使用命令“id-g”检查我的groupID时,我得到了20,但是当我使用我的函数在程序中运行它时,我得到了值1 这是我的密码 int Registerpw(char **args){ register struct passwd *pw; register uid_t uid; int c; register gid_t gid;
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();
您的代码仅声明并定义了
gid
的变量,但未初始化其值。您应为其指定正确的值:
register gid_t gid;
gid = getgid();
或者简单地说:
register gid_t gid = getgid();
我只是简单地使用int数据类型声明变量,并使用getgid()和geteuid()方法来显示userid和groupid。
int gid,uid;
uid=geteuid();
gid=getgid();
我只是简单地使用int数据类型声明变量,并使用getgid()和geteuid()方法来显示userid和groupid。
int gid,uid;
uid=geteuid();
gid=getgid();
是否缺少为
gid
赋值的语句?@MarkPlotnickregister gid\u t gid
正在获取gid@Recap这一行代码仅仅声明并定义了gid
的变量,未初始化该值。上面的代码从未初始化过gid
。是否缺少为gid
赋值的语句?@MarkPlotnickregister gid\u t gid
正在获取gid@Recap这一行代码仅仅声明并定义了gid
的变量,未初始化该值。上面的代码从未初始化过gid
。感谢您的澄清。我犯了一个愚蠢的错误。你知道我怎么能在一行中打印所有这些内容吗?如果您查看我的输出,您可以看到它将groupName打印在下面的行中,因为我将其保存在“puts”中。你知道我如何避免在“puts”中使用它,并可能以不同的方式打印它吗?@Recapputs
会在你试图打印的字符串中附加一个换行符。如果不需要换行符,可以使用类似于printf(“%s”,pw->pw_name)的内容当我把它改为printf(“%s”,pw->pw_name)时代码>我得到“分段错误:11”
返回,它退出program@Recap你能不能再发一个问题来描述这个问题(推荐)?或者请至少编辑您的原始问题,添加导致问题的当前代码(不推荐)。由于您的代码可能已多次更改,其他人不知道实际发生了什么。感谢您的澄清。我犯了一个愚蠢的错误。你知道我怎么能在一行中打印所有这些内容吗?如果您查看我的输出,您可以看到它将groupName打印在下面的行中,因为我将其保存在“puts”中。你知道我如何避免在“puts”中使用它,并可能以不同的方式打印它吗?@Recapputs
会在你试图打印的字符串中附加一个换行符。如果不需要换行符,可以使用类似于printf(“%s”,pw->pw_name)的内容当我把它改为printf(“%s”,pw->pw_name)时代码>我得到“分段错误:11”
返回,它退出program@Recap你能不能再发一个问题来描述这个问题(推荐)?或者请至少编辑您的原始问题,添加导致问题的当前代码(不推荐)。因为您可能对代码进行了多次更改,其他人不知道实际发生了什么。虽然此代码可能会回答此问题,但提供有关此代码为什么和/或如何回答此问题的其他上下文可以提高其长期价值。虽然此代码可能会回答此问题,提供关于此代码为什么和/或如何回答此问题的附加上下文可提高其长期价值。