我在 linux 中运行一个 C 程序,它打印文件名以及它的用户和组所有权。我正在使用getpwuid
和getgrgid
。
当文件由不存在的用户拥有时(即,/etc/passwd
我的机器上没有给定 UID 的条目),我的程序会出现“由信号 11 终止”的段错误。
如何使我的程序的行为与 相同ls
,以便在用户不存在时打印数字 UID,而不是段错误?
相关代码片段如下:
lstat(filename,&fileStat)
struct group *grp;
struct passwd *pwd;
pwd = getpwuid(fileStat.st_uid);
printf(" %s", pwd->pw_name);
grp = getgrgid(fileStat.st_gid);
printf(" %s", grp->gr_name);