我有一些东西使用一堆异步分叉来完成它的工作(在工具包下)。
在特定的代码区域中,我正在分叉,然后在子进程上执行阻塞等待。
SIGCHLD 处理程序是否会在阻塞等待看到信号之前吞噬信号,让我可能挂起,还是等待总是会得到一些东西?
SIGCHLD
处理程序在退出的子进程的事件(边缘)上触发。对waitpid()
的阻止调用将等待该特定子进程的条件(级别)不再存在。
当进程退出时,将传递一个SIGCHLD
,并且其处理程序将正常执行。如果该进程存在waitpid()
阻塞,则无论是否存在信号处理程序,它都将正常返回。