日期:2014-05-16  浏览次数:20693 次

多个子进程结束时刻未知,父进程如何回收僵死进程??
如果父进程创建了很多子进程,而且子进程的结束顺序(或时刻)是未知的,
那么当子进程结束的时候,父进程怎样才能调用wait()或waitpid()让子进程退出僵尸状态呢?

考虑使用sigprocmask+sigsuspend,先将SIGCHLD信号屏蔽,然后统计fork了多少个子进程(total个),父进程中在 解除阻塞SIGCHLD之前,调用sigsuspend,防止在解除之前有SIGCHLD信号发生,但是在解除阻塞SIGCHLD之后,如何用pause()函数再等待下一个SIGCHLD信号有时会造成一直等待的问题,因为子进程何时退出是不一定的嘛,这种情况应该怎样解决呢??


希望大家多给个思路
Linux?进程?信号

------解决方案--------------------
考虑能否用WIFEXITED判断子进程退出状态呢?
------解决方案--------------------
引用:
Quote: 引用:

考虑能否用WIFEXITED判断子进程退出状态呢?

SignalHandle 中已经用了

为什么一定要有pause函数?直接等待信号的到来不行么?
------解决方案--------------------
直接在信号处理函数中用wait不行吗,
搞不懂为啥搞得这么复杂呢。