为什么我在 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);
            }