5

我有一些东西使用一堆异步分叉来完成它的工作(在一个工具包下面)。

在特定的代码区域中,我正在分叉,然后对子进程进行阻塞等待。

SIGCHLD 处理程序是否会在阻塞等待看到它之前吞噬信号,让我可能挂起,或者等待总是会得到一些东西?

4

1 回答 1

5

处理程序在SIGCHLD子进程退出的事件(边缘)上被触发。阻塞调用waitpid()将等待该特定子进程的条件(级别)不再存在。

当进程退出时,aSIGCHLD将被传递,其处理程序将正常执行。如果该进程发生waitpid()阻塞,则无论是否存在信号处理程序,它都会正常返回。

于 2012-05-01T15:35:22.990 回答