gpt4 book ai didi

c - 如何按 C 中的到达顺序处理多个信号

转载 作者:可可西里 更新时间:2023-11-01 11:50:41 24 4
gpt4 key购买 nike

我希望能够处理许多相同类型的信号 (SIGCHLD),但是,我想确保如果在我仍在处理前一个信号时有信号到达,第一个到的我处理完,处理完了,我再处理下一个。

可能有多个信号等待处理。

此外,如果进程被父进程终止或终止(使用 SIGTERM/SIGKILL),它是否会发送 SIGCHLD

最佳答案

只要您使用 sigaction 而不是有问题的 signal 函数来设置您的信号处理程序,您就可以确定(除非您另外指定)您的信号处理程序将不会被它正在处理的信号的另一次出现打断。但是,如果许多子进程同时全部死亡,您可能不会收到每个子进程的信号。在每个 SIGCHLD 上,正常过程是尝试为 child 等待,直到您的wait-family 函数说没有 child 可以等待.此时,您可以确定任何进一步的子终止都会给您一个新的 SIGCHLD

此外,由于信号处理程序中可以使用的功能非常受限,因此最好设置某种标志或以其他方式通知主程序循环它应该检查已终止的子程序通过 wait 接口(interface)之一。

最后,是的,无论子进程终止的原因如何,都会发送一个 SIGCHLD - 包括它是否被父进程杀死。

关于c - 如何按 C 中的到达顺序处理多个信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5655383/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com