主进程如何监控子进程状态?如果子进程非正常退出呢?

joseph_hsw joseph_hsw 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
如题,在多进程处理过程中,如果子进程非正常退出了怎么办?
我查到这样一个函数:
pid_t wait(int *status)     
进程一旦调用了wait,就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到了这样一个已经变成僵尸的子进程, wait就会收集这个子进程的信息,并把它彻底销毁后返回;如果没有找到这样一个子进程,wait就会一直阻塞在这里,直到有一个出现为止。

但是如果使用wait的话,有一个问题就是,一旦使用了wait,那么主进程
就没办法做其他的事情了。
有没有办法使得wait超时退出阻塞?我想了两个办法,大家给点意见看是否可行:
1.用alarm做一个定时器,定时器响应时候的SIGALRM是否会是wait响应而退出。(因为信号是会影响到wait函数的)
2.使用多进程+多线程模式(类似apache的MPM),在主进程中单独开一个线程执行wait,这时候的阻塞是否会影响其他线程?

如果有其他的好办法,也可以。
先谢谢回帖的各位了
...全文

相关推荐

评论 8
收藏 已收藏
分享
返回顶部
joseph_hsw
C语言 70,040 成员 243,237 内容