当我运行 C 程序时,出现错误段错误。这是我的代码示例,用于获取文件/目录
的所有者和组:
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
处收到错误。是否有可能某些文件/目录
没有所有者,或者为什么我会收到“段错误”
?
更新: 经过错误检查后,我得到了以下结果(如 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
这个文件/目录有什么问题吗?
最佳答案
检查 getpwuid 和 getgrgid 的返回值。您也没有对 stat 函数进行基本的错误检查。尽可能多地检查错误。假设没有任何作用。
关于C 获取文件/目录的所有者和组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36069748/