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
我觉得有点古怪。
当我 运行 我的 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
我觉得有点古怪。