PID未运行时,/ proc / PID仍然可以存在吗?


11

/proc/4587即使没有使用PID 4587的进程,也可能存在类似的文件夹?


1
您是否想知道检查/ proc / N是否是一种安全/可靠的方式来查看PID N是否正在运行?
安迪·莱斯特

我想知道从理论上讲,进程消失后在/ proc中是否可能存在残留物。
David Dai

Answers:


25

如果/proc只是proc挂载(没有人在玩带覆盖的技巧),否,只有基于pid的文件夹存在,只要相应的进程以某种状态存在(包括僵尸)。实际上,就在返回进程ID的目录条目之前,内核会重新验证进程的存在 -因此,在返回目录条目的那一刻,相应的进程仍然存在。访问目录还可以通过查找相应的过程开始。(如果行号更改,请查找proc_pident_instantiateproc_pident_lookup。)

/proc稍后(甚至几微秒)列出和使用结果时,您可能会遇到问题:列出时可以运行一个进程/proc,并在对结果采取行动之前将其停止。


3
完成执行但wait()尚未被调用的流程又如何呢?
el.pescado

2
好点@ el.pescado,快速检查表明僵尸进程仍具有其目录。我将更新我的答案,谢谢!
斯蒂芬·基特

基本上,如果ps显示进程,则其/proc目录应该存在。
Barmar

@Barmar实际上“必须”:ps访问/proc以查找其显示的信息。
史蒂芬·基特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.