如何解决如何按照到达C的顺序处理多个信号
| 我希望能够处理许多相同类型(SIGCHLD
)的信号,但是,我想确保如果在我仍在处理前一个信号的同时到达一个信号,我将完成第一个到达的信号的处理,只有完成处理后,我才会处理下一个。
可能有多个信号正在等待处理。
另外,如果进程被父进程终止或杀死(使用SIGTERM
/SIGKILL
),进程是否发送SIGCHLD
?
解决方法
只要您使用
sigaction
而不是有问题的signal
函数来设置信号处理程序,就可以确保(除非另行指定),信号处理程序不会被其处理的另一次信号中断。但是,如果所有子进程一次全部死亡,则可能不会收到每个子进程的信号。在每个ѭ0上,正常的过程是尝试为孩子设置wait
,直到您的wait
-家庭功能表明没有孩子可以等待。此时,您可以确定任何进一步的子终止都会给您新的“ 0”。
另外,由于您在信号处理程序中可以使用的功能非常受限制,因此最好设置某种标志或以其他方式通知您的主程序循环它应通过以下方法检查终止的子项会更好“ 7”接口之一。
最后,是的,无论孩子终止的原因如何,都将交付“ 0”,包括是否被父母杀死。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。