为什么我在 getgrgid() 函数中出现未定义错误
Why i get Undefined error in getgrgid() function
基本上我的代码是这样的:
int main(int ac, char **av) {
char *dir_name = get_dir_name(ac, av);
DIR *dir;
struct dirent *entry;
t_stat rd_stat;
dir = opendir(dir_name);
if (!dir) {
perror("diropen");
exit(EXIT_FAILURE);
}
t_group *group_info;
while ((entry = readdir(dir)) != NULL) {
if (lstat(entry->d_name, &rd_stat) == -1) {
perror("lstat");
exit(EXIT_FAILURE);
}
if ((group_info = getgrgid(rd_stat.st_gid)) == NULL) {
perror("getgrgid() error");
}
printf(%s\n", group_info);
}
closedir(dir);
}
我在尝试将组 ID 解码为 char* 类型时遇到错误:
getgrgid() error: Undefined error: 0
我不知道为什么这不起作用,因为一切都与用户 id
getgrgid()
returns NULL
当出现错误或找不到组 ID 时。您需要检查 errno
来区分。
另外,group_info
是一个结构体,不是字符串,用printf()
是打印不出来的。获取 gr_name
成员以打印组名。
if ((group_info = getgrgid(rd_stat.st_gid)) == NULL) {
if (errno) {
perror("getgrgid() error");
} else {
printf("Unnamed group %d\n", rd_stat.st_gid);
}
} else {
printf(%s\n", group_info.gr_name);
}
基本上我的代码是这样的:
int main(int ac, char **av) {
char *dir_name = get_dir_name(ac, av);
DIR *dir;
struct dirent *entry;
t_stat rd_stat;
dir = opendir(dir_name);
if (!dir) {
perror("diropen");
exit(EXIT_FAILURE);
}
t_group *group_info;
while ((entry = readdir(dir)) != NULL) {
if (lstat(entry->d_name, &rd_stat) == -1) {
perror("lstat");
exit(EXIT_FAILURE);
}
if ((group_info = getgrgid(rd_stat.st_gid)) == NULL) {
perror("getgrgid() error");
}
printf(%s\n", group_info);
}
closedir(dir);
}
我在尝试将组 ID 解码为 char* 类型时遇到错误:
getgrgid() error: Undefined error: 0
我不知道为什么这不起作用,因为一切都与用户 id
getgrgid()
returns NULL
当出现错误或找不到组 ID 时。您需要检查 errno
来区分。
另外,group_info
是一个结构体,不是字符串,用printf()
是打印不出来的。获取 gr_name
成员以打印组名。
if ((group_info = getgrgid(rd_stat.st_gid)) == NULL) {
if (errno) {
perror("getgrgid() error");
} else {
printf("Unnamed group %d\n", rd_stat.st_gid);
}
} else {
printf(%s\n", group_info.gr_name);
}