[英]C get owner and group of file/directory
運行C程序時出現錯誤分段錯誤。 這是我的代碼示例,用於獲取file/directory
的所有者和組:
struct stat sb;
char outstr[200];
stat(file_or_dir_name, &sb);
struct passwd *pw = getpwuid(sb.st_uid);
struct group *gr = getgrgid(sb.st_gid);
printf("%s %s\n", pw->pw_name, gr->gr_name);
該代碼在目錄中多次運行,但是在一個文件中, pw->pw_name
出現錯誤。 某些files/directories
是否可能沒有所有者,或者為什么我會出現"Segmentation fault"
?
更新:錯誤檢查后,我得到以下結果(如-ls in find):
119 0 --- xrwxr-- 91-守護程序9007206 Apr 29 00:03 ./Test/test.txt
119 0 --- xrwxr-- 91-守護程序9007206 Apr 29 00:03 ./Test/Test2
119 0 --- xrwxr-- 91-守護程序9007206 Apr 29 00:03 ./Test/Test2/test2.txt
這個文件/目錄怎么了?
檢查getpwuid和getgrgid的返回值。 您也沒有對stat函數執行基本的錯誤檢查。 盡可能多地進行錯誤檢查。 假設沒有任何效果。
在ls
輸出中,請注意您擁有所有者/組的daemon 9007206
。
這意味着uid
是[通過getpwuid
]在/etc/passwd
[或equiv]中找到的。
但該集團未找到[由getgrgid
,可呈現將返回NULL
]在/etc/group
[或當量。
ls
處理了此問題並打印了gid
的數值。
旁注: 9007206
對我來說似乎有點9007206
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.