gpt4 book ai didi

c - 发送多个信号时信号处理程序的行为

转载 作者:行者123 更新时间:2023-11-30 17:37:32 25 4
gpt4 key购买 nike

我正在处理一些问题,我有一个处理信号的函数,如下所示:

void sigChld(int noSig)
{
//some action here
}

void F1 () // some child process
{
struct sigaction action;
.... // initialisation of the structure with sigChld as the function handler
sigaction(SIGCHLD, &action, 0);

while(1)
callToFunction();
}

在我的子进程 F1 中,我将 SIGCHLD 的处理程序附加到 sigChld(),然后调用 callToFunction() 创建另一个进程并进行一些处理。在执行结束时,它会向我发送一个 SIGCHLD,我需要在处理程序中对其进行处理。

现在我的问题是:我需要 callToFunction() 的返回值,因此我考虑在执行某些操作之前在 sigchld 的处理程序中使用 waitpid。但是,如果在 waitpid() 或操作期间,callToFunction() 发送另一个信号怎么办?当前处理程序会停止吗?或者将继续执行然后处理下一个信号?

在我的问题中,我需要一个接一个地完全处理信号,就像并行执行处理程序一样。

最佳答案

我不确定 SIGCHLD 处理程序中的 waitpid() 实际上是否可能被信号中断,因为如果有可用的子进程,它应该立即返回,但一般来说,信号可以在信号处理程序期间发生,就像其他任何地方。

关于c - 发送多个信号时信号处理程序的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22360957/

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