C 获取文件/目录的所有者和组

标签 c linux owner

当我运行 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/

相关文章:

C程序: Strcmp

c - 当我创建并向结构添加值时发生了一些事情,导致了段错误

c - 理解使用 malloc 重新分配的困难

linux - Linux RHEL 上的 RabbitMQ 内部内存路径映射到另一个位置

MySQL 在两个端口上使用 IPTables - 自访问

linux - Bash 脚本,列出包含大于 X 的多个文件的子文件夹/文件夹

android - 以编程方式将包设置为设备所有者

java - Dropbox Java API - 文件所有者电子邮件

wpf - 如何将Win32窗口设置为WPF窗口的所有者?

c - 错误 : "Implicit declaration of function..." on all my functions