多个子进程结束时刻未知,父进程如何回收僵死进程??
如果父进程创建了很多子进程,而且子进程的结束顺序(或时刻)是未知的,
那么当子进程结束的时候,父进程怎样才能调用wait()或waitpid()让子进程退出僵尸状态呢?
考虑使用sigprocmask+sigsuspend,先将SIGCHLD信号屏蔽,然后统计fork了多少个子进程(total个),父进程中在 解除阻塞SIGCHLD之前,调用sigsuspend,防止在解除之前有SIGCHLD信号发生,但是在解除阻塞SIGCHLD之后,如何用pause()函数再等待下一个SIGCHLD信号有时会造成一直等待的问题,因为子进程何时退出是不一定的嘛,这种情况应该怎样解决呢??
希望大家多给个思路
------解决方案--------------------考虑能否用WIFEXITED判断子进程退出状态呢?
------解决方案--------------------
为什么一定要有pause函数?直接等待信号的到来不行么?
------解决方案--------------------直接在信号处理函数中用wait不行吗,
搞不懂为啥搞得这么复杂呢。