C 获取 file/directory 的所有者和群组

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"?

更新: 错误检查后,我得到以下结果(如 find 中的 -ls):

119 0 ---xrwxr-- 91 - daemon 9007206 Apr 29 00:03 ./Test/test.txt

119 0 ---xrwxr-- 91 - daemon 9007206 Apr 29 00:03 ./Test/Test2

119 0 ---xrwxr-- 91 - daemon 9007206 Apr 29 00:03 ./Test/Test2/test2.txt

这个files/directories有什么问题吗?

检查 getpwuid 和 getgrgid 的 return 值。您也没有对 stat 函数进行基本错误检查。尽可能多地检查错误。假设没有任何效果。

从您的 ls 输出中,请注意您有 daemon 9007206 用于 owner/group。

这意味着 uid 是由 getpwuid] 在 /etc/passwd [或等同物] 中找到的。

但是 没有 getgrgid 找到该组——这会 return NULL] 在 /etc/group [或等价物]。

ls 处理了这个并打印了 gid.

的数值

旁注: 9007206 我觉得有点古怪。