linux多线程结束时,回收子进程问题

当已经有SIGCHLD信号时,我们调用waitpid是可以立即返回的。所以经常在SIGCHLD处理程序中调用waitpid函数,这样就可以期望他总能立即返回,但是如果在执行SIGCHLD处理程序期间又有子进程终止,因为unix不对信号排队,如果多于一个子进程终止,则会导致信号丢失,在这种情况下,如果只调用一次waitpid就会导致僵死进程的产生,可以采取while(waitpid(-1,0,WNOHANG)>0);来避免这个问题。还有一种方式是将options设置为WNOHANG在调用waitpid也会立即返回。
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/oguro/article/details/53888966
文章标签: linux 回收
个人分类: linux
上一篇linux将参数传递到信号处理函数
下一篇C++的string类IO输入
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭