如何按照到达C的顺序处理多个信号

| 我希望能够处理许多相同类型(
SIGCHLD
)的信号,但是,我想确保如果在我仍在处理前一个信号的同时到达一个信号,我将完成第一个到达的信号的处理,只有完成处理后,我才会处理下一个。 可能有多个信号正在等待处理。 另外,如果进程被父进程终止或杀死(使用
SIGTERM
/
SIGKILL
),进程是否发送
SIGCHLD
?     
已邀请:
只要您使用
sigaction
而不是有问题的
signal
函数来设置信号处理程序,就可以确保(除非另行指定),信号处理程序不会被其处理的另一次信号中断。但是,如果所有子进程一次全部死亡,则可能不会收到每个子进程的信号。在每个ѭ0上,正常的过程是尝试为孩子设置
wait
,直到您的
wait
-家庭功能表明没有孩子可以等待。此时,您可以确定任何进一步的子终止都会给您新的“ 0”。 另外,由于您在信号处理程序中可以使用的功能非常受限制,因此最好设置某种标志或以其他方式通知您的主程序循环它应通过以下方法检查终止的子项会更好“ 7”接口之一。 最后,是的,无论孩子终止的原因如何,都将交付“ 0”,包括是否被父母杀死。     

要回复问题请先登录注册