簡體   English   中英

C獲取文件和目錄的所有者和組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM