【发布时间】:2022-08-13 22:20:08
【问题描述】:
我正在尝试打开并读取所有 proc/[pid]/stat 文件的内容。
但我得到了ENOENT当 pid >= 10961 时,打开函数出错。
从 proc 手册页我发现了这个:
此外,如果一个进程变成了一个僵尸进程(一个已被其父进程通过退出调用终止但未被等待调用挂起的进程),其大部分关联的 /proc 文件将从目录结构中消失。通常,稍后尝试打开或读取或写入在进程终止之前打开的文件会引发 ENOENT 消息。
但我仍然可以通过出现的路径使用
cat命令查看文件内容ENOENT.这令人困惑。这是僵尸进程吗?为什么我打不开?
代码
void get_stat(char *path) { int fd; char *res; printf(\"path : %s\\n\", path); fd = open(path, O_RDONLY); if (fd < 0) { perror(\"open error\"); exit(EXIT_FAILURE); } res = read_file(fd); }输出
... worked fine before 10961 ... path : /proc/6215/stat path : /proc/6354/stat path : /proc/10961/stat open error: No such file or directory path : /proc/12049/stat open error: No such file or directory path : /proc/12127/stat open error: No such file or directory path : /proc/12168/stat open error: No such file or directory path : /proc/12169/stat open error: No such file or directory path : /proc/12171/stat open error: No such file or directory path : /proc/12230/stat open error: No such file or directory path : /proc/12238/stat open error: No such file or directory path : /proc/13185/stat open error: No such file or directory path : /proc/13284/stat open error: No such file or directory path : /proc/13285/stat open error: No such file or directory path : /proc/13466/stat open error: No such file or directory path : /proc/13522/stat open error: No such file or directory path : /proc/13523/stat open error: No such file or directory path : /proc/13532/stat open error: No such file or directory path : /proc/13579/stat open error: No such file or directory path : /proc/13580/stat open error: No such file or directory path : /proc/13589/stat open error: No such file or directory path : /proc/13636/stat open error: No such file or directory path : /proc/13637/stat open error: No such file or directory path : /proc/13726/stat open error: No such file or directory path : /proc/14416/stat open error: No such file or directory path : /proc/15059/stat open error: No such file or directory path : /proc/15153/stat open error: No such file or directory path : /proc/15255/stat open error: No such file or directory path : /proc/15571/stat open error: No such file or directory path : /proc/15573/stat open error: No such file or directory path : /proc/15603/stat open error: No such file or directory path : /proc/15697/stat open error: No such file or directory path : /proc/15744/stat open error: No such file or directory path : /proc/15771/stat open error: No such file or directory path : /proc/15790/stat open error: No such file or directory
-
您是否以 root 身份运行代码?
-
如果您的代码无法打开文件,则您的代码将退出并出现错误,但提供的示例输出似乎没有...