proc ファイル システム内のディレクトリをループする関数があります。次に、この関数はプロセス名を grep してその PID を見つけ、この PID を呼び出し元の関数に返します。
関数は正常に動作しているように見えますが、一部のディレクトリ (プロセスに対応) を開いているときに 1 つまたは 2 つのケースで失敗します。これが私がやっていることです。
dr = readdir(dp);
dr をループし
ます ディレクトリとプロセス名の dr タイプを確認
し、プロセス名を文字列と比較します。
Return PID in case of a match
dr = readdir(dp);
end loop
main() {
DIR *d;
struct dirent *e;
e=malloc(sizeof(struct dirent));
d=opendir("/proc");
while ((e = readdir(d)) != NULL) {
printf("%d %s\n", e->d_type, e->d_name);
}
closedir(d);
}