c - 在 C 中显示文件的所有者名称

标签 c unix implementation ls

我正在实现 ls 命令,并且现在正在执行 -l 选项。我对楼主的名字有一些疑问。它总是打印 id 而不是名称。

这是我的功能:

void print_user_ID(char* filepath) {
    struct stat sb;
    struct passwd pwent;  
    struct passwd *pwentp;
    char buf[_SC_GETPW_R_SIZE_MAX];

    if(stat(filepath, &sb) == -1) {
        perror("stat"); 
    }

    if (!getpwuid_r(sb.st_uid, &pwent, buf, sizeof(buf), &pwentp))  
        printf("%10s ", pwent.pw_name);  
    else  
        printf("%7d ", sb.st_uid);  
}

你知道我的错误在哪里吗?

最佳答案

Alok Singhal 的评论回答了我的问题。我必须将 _SC_GETPW_R_SIZE_MAX 更改为更大的数字。

关于c - 在 C 中显示文件的所有者名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23846419/

相关文章:

无法理解为什么我会因为 strncpy 而出现段错误

c++ - SDL_RenderCopy() 不适用于数组

c - 有什么方法可以在 Visual Studio 中定义自动声明吗?

mysql - 改进 mysql 中的文件路径搜索

c++ - 测试用例的意外输出

c - 此 C 代码中的错误在哪里,如何消除警告?

linux - 为什么 if [ !$(grep -q) ] 不起作用而 if grep -q 起作用?

java - 打开的文件太多<如何查找导致泄漏的java文件>

java - 如何获取从具有指定泛型的接口(interface)继承的所有类的列表(接口(interface)<具体类>)

c# - 针对只有一个类实现所述接口(interface)的接口(interface)进行编程