在《UNIX网络编程》一书中,有这样的话:
那么在考虑下属过程:
五个子进程同时终止,产生的五个SIGCHLD信号几乎同时到达,父进程进入信号处理函数;
这时,接收到第一个SIGCHLD信号后,SIGCHLD信号是阻塞状态,那后面的几个SIGCHLD信号按照书上所说应该只会递交一次。
这和waipid是否阻塞不就没啥关系了吗?
还是说WNOHANG也会解除SIGCHLD信号的阻塞?
void
sig_child(int signo)
{
pid_t pid;
int stat;
while( (pid = waitpid(-1, &stat, WNOHANG) ) > 0)
printf("xxx\n");
return;
}