我有一个启动子进程的进程,当子进程退出时,扫描/proc/<pid>/stat
以收集有关子进程使用的 CPU 和内存的一些信息。然而我担心我在这里的时间是借来的。wait()
返回或发送/调用信号处理程序后多久SIGCHLD
,它实际上会挂起吗?如果它们持续到需要重用 PID 为止,那就超级方便了,但显然情况并非如此。
答案1
/proc/[pid]
当程序退出时消失。看看这个:https://superuser.com/questions/365576/lifetime-of-the-symlinks-from-the-file-descriptors-in-proc-pid-fd
编辑:
等待手册页说
wait() 函数应挂起调用线程的执行,直到调用进程的已终止子进程之一的状态信息可用,或者直到传递一个信号,该信号的操作是执行信号捕获函数或终止该线程。过程。
因此有可能传递了终止子进程的信号。然后wait
返回了,但是子进程还没有退出。所以你仍然可以阅读/proc/pid/stat
。当子进程退出时,/proc/pid/stat
就消失了。