我正在尝试做的主要思想:
我的目标是每 1 秒调用一次 alarm_handler,尽管有其他信号(在本例中为 SIGUSR2)。为此,我在 pause() 语句之前编写了 alarm(1)。
但是,实际上发生的事情是,如果我多次收到 SIGUSR2 信号,则永远不会调用 alarm_handler (而我确实希望每 1 秒调用一次)。
注意:我不想忽略 SIGUSR2 信号。我希望它们完成,但我必须确保每 1 秒完成一次 alarm_handler。
这是主要的:
int main(int argc, const char* argv[])
{
signal(SIGUSR2, sig_readPipe);
signal(SIGALRM, alarm_handler);
do
{
alarm(1);
pause();
}while(stopFlag);
return 0;
}
这里是信号处理程序:
void sig_readPipe(int sig)
{
signal(SIGUSR2, sig_readPipe);
.
.
.
}
void alarm_handler(int sig)
{
signal(SIGALRM, alarm_handler);
.
.
.
}