【发布时间】:2016-10-31 19:34:23
【问题描述】:
我正在尝试执行此代码:
signal(SIGALRM,handler);
alarm(1);
while(1){}
handler 函数只打印“test”。
alarm(1) 在这种情况下最终只会被执行一次。我试图把它放在循环中,它似乎根本没有被执行!
我对信号有点陌生。有人可以向我解释这是怎么发生的吗?
【问题讨论】:
-
如果你在循环中调用
alarm,你会不断地将它重置为1秒,它永远不会有机会跑下来。如果您想要一个定期计时器,您可以查看setitimer或timer_create。 -
下次考虑提供MVCE。至少,显示您询问的代码,而不是显示其他代码并解释它与令您困惑的代码有何不同......另外,阅读有关您询问的功能的文档,并提及您是如何做到的找不到答案有个好主意。
标签: c while-loop signals alarm