C 发送多个信号时信号处理器的行为

C 发送多个信号时信号处理器的行为,c,signals,C,Signals,我在处理一些问题,我有一个处理信号的函数,就像这样: 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); w

我在处理一些问题,我有一个处理信号的函数,就像这样:

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(),然后调用函数()创建另一个进程并进行一些处理。在执行结束时,它向我发送一个SIGCHLD,我需要在处理程序中处理它

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


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

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