计时器在一段时间后启动。 为了调用第一个计时器处理程序,我必须等待最小的timer.it_value.tv_sec秒。 我希望我的时间处理程序在setitimer函数后立即被调用。
如果我设置timer.it_value.tv_sec = 0,则计时器停止。
我试图使用计时器实现on-off机制。
timer.it_value.tv_sec = 0; // If I do this timer stops
timer.it_value.tv_usec = 0;
timer.it_interval.tv_sec = 2;
timer.it_interval.tv_usec = 0;
setitimer (ITIMER_REAL, &timer, NULL);
所以为了立即执行,我设置了timer.it_value.tv_usec = 1, 但是如下所示它需要1次使用延迟。
timer.it_value.tv_sec = 0;
timer.it_value.tv_usec = 1;// Here it is
timer.it_interval.tv_sec = 2;
timer.it_interval.tv_usec = 0;
setitimer (ITIMER_REAL, &timer, NULL);
还有其他方式吗?
答案 0 :(得分:1)
如果你想每两秒激活一次定时器(初始情况除外),只需将其设置为两秒钟,但在启动计时器之前立即提升信号,如:
#include <signal.h>
timer.it_interval.tv_sec = 2;
timer.it_interval.tv_usec = 0;
raise(SIGALRM);
setitimer (ITIMER_REAL, &timer, NULL);
毕竟,提升SIGALRM
是setitimer (ITIMER_REAL, ...)
在计时器到期时会做的事情。