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

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

博主推荐

换一批

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