【发布时间】:2023-03-23 10:40:02
【问题描述】:
我正在处理一些问题,我有一个处理信号的函数,就像这样:
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() 发送另一个信号怎么办?当前的处理程序会停止吗?还是会继续执行,然后处理下一个信号?
在我的问题中,我需要一个接一个地完全处理信号,就像我并行执行处理程序一样。
【问题讨论】: