のために、私は、ファイル名に加えて、そのユーザーとグループの所有権を印刷し、LinuxでCプログラムを、実行していますが存在しないとき、セグメンテーションフォールト。私はgetpwuid
とgetgrgid
を使用しています。getpwuidとgetgrgid原因は、ユーザーが指定したUID
ファイルが存在しないユーザーによって所有されている場合(つまり、マシン上の特定のUIDに対して、/etc/passwd
にエントリが存在しない場合)、私のプログラムは "シグナル11で終了"とセグメンテーションします。
私のプログラムはls
と同じように動作させることができるので、segfaultingではなく、ユーザーが存在しないときに数値の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);
チェックをチェックする前にゼロをerrnoに設定する必要があります。値がNULLの場合は、名前としてlstatのuidを使用します –