当前位置: 技术问答>linux和unix
请教--父进程监控子进程,欢迎高手进来探讨!!!
来源: 互联网 发布时间:2015-04-01
本文导语: 父进程fork几个子进程,子进程做协同完成工作,现在要求父进程能够监控子进程的状态,当某个子进程死掉时能够重新启动该子进程。 还有一个问题,多进程如何防止产生僵死进程,我用 waitpid在信号句柄中...
父进程fork几个子进程,子进程做协同完成工作,现在要求父进程能够监控子进程的状态,当某个子进程死掉时能够重新启动该子进程。
还有一个问题,多进程如何防止产生僵死进程,我用 waitpid在信号句柄中捕获信号,可是当我试着用kill -9杀了其中的一个子进程时,却没有捕获到SIGCHLD信号,而产生的僵死进程。请教高手指点迷津,谢了!
还有一个问题,多进程如何防止产生僵死进程,我用 waitpid在信号句柄中捕获信号,可是当我试着用kill -9杀了其中的一个子进程时,却没有捕获到SIGCHLD信号,而产生的僵死进程。请教高手指点迷津,谢了!
|
不明白你为什么还要问,因为你已经知道可以用SIGCHLD信号来做这件事了。至于收不到信号,是否你的进程的父子关系被改变了,比如调用了setpgrp之类的接口。
|
SIGCHLD是不可重入,也就是说你在处理SIGCHLD signal handler函数里面的时候,如果刚好有子进程退出,这个SIGCHLD信号就丢掉了。
你需要用非阻塞的waitpid(用WNOHANG参数),在一个handler函数里面不停的waitpid。
你需要用非阻塞的waitpid(用WNOHANG参数),在一个handler函数里面不停的waitpid。
|
换种方式吧!用共享内存!子进程定时写状态!主进程监控状态即可。