我正在实现 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/