gpt4 book ai didi

c - 强制每 1 秒调用一次警报处理程序(在 C 中)

转载 作者:行者123 更新时间:2023-11-30 18:58:31 24 4
gpt4 key购买 nike

我想做的事情的主要想法:

我的目标是,无论是否有其他信号(在本例中为 SIGUSR2),alarm_handler 都会每 1 秒调用一次。为此,我在pause()语句之前编写了alarm(1)。

但是,实际上发生的情况是,如果我多次收到 SIGUSR2 信号,则alarm_handler 永远不会被调用(虽然我确实希望每 1 秒调用一次)。

注意:我不想忽略 SIGUSR2 信号。我希望它们完成,但我必须确保 Alarm_handler 每 1 秒完成一次。

主要内容如下:

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);
.
.
.
}

最佳答案

将每秒需要处理的内容放入一个单独的函数中,并在该函数中将全局计数器设置为当前时间。每次调用任何信号处理程序时,它都应该检查计数器是否与当前秒匹配,如果不匹配,则调用 run_this_every_second()。

关于c - 强制每 1 秒调用一次警报处理程序(在 C 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16132608/

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