僵死进程的问题

前几天被问了一个僵死进程的问题,自己更多时候并发会选择线程,对进程的问题竟然文盲到如此程度,惭愧惭愧。

 

僵死进程是说子进程退出了并没有父进程来回收它的资源,这样的进程就是僵死进程。linux是这样当一个进程由于某种原因终止后,内核并不立刻把它从系统中清除,而是把任务交给其父进程,如果父进程退出了则交给1号进程。

 

自己写了一个测试程序,系统不停开出子进程,子进程不做任何事情就退出,程序很快报出Resource temporarily unavailable的错误,因为子进程没做任何事就退出了,所以不会是因为操作系统内进程过多而导致错误,这个错误可以认为是僵死进程造成的。

测试代码:

 

 

如果把注释去掉,让父进程回收结束了的子进程资源,那么不会报错。

 

ps:在一个进程终止或者停止时,将SIGCHLD信号发送给其父进程。按系统默认将忽略此信号。如果父进程希望被告知其子系统的这种状态,则应捕捉此信号。信号的捕捉函数中通常调用wait函数以取得进程ID和其终止状态。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值