基本上我的代碼如下所示:
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() 錯誤:未定義錯誤:0
我不知道為什么這不起作用,因為一切都適用于用戶 ID
uj5u.com熱心網友回復:
getgrgid()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);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/418325.html
標籤:
上一篇:為什么VisualStudio2019的“構建”選單上沒有“清潔解決方案”選項?
下一篇:如何將物件分配給繼承的函式
