主进程如何监控子进程状态?如果子进程非正常退出呢?
如题,在多进程处理过程中,如果子进程非正常退出了怎么办?
我查到这样一个函数:
pid_t wait(int *status)
进程一旦调用了wait,就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到了这样一个已经变成僵尸的子进程, wait就会收集这个子进程的信息,并把它彻底销毁后返回;如果没有找到这样一个子进程,wait就会一直阻塞在这里,直到有一个出现为止。
但是如果使用wait的话,有一个问题就是,一旦使用了wait,那么主进程
就没办法做其他的事情了。
有没有办法使得wait超时退出阻塞?我想了两个办法,大家给点意见看是否可行:
1.用alarm做一个定时器,定时器响应时候的SIGALRM是否会是wait响应而退出。(因为信号是会影响到wait函数的)
2.使用多进程+多线程模式(类似apache的MPM),在主进程中单独开一个线程执行wait,这时候的阻塞是否会影响其他线程?
如果有其他的好办法,也可以。
先谢谢回帖的各位了