2012-01-12 97 views
0

我使用下面的代码来设置闹钟。如何重新启动计时器?

struct itimerval timer; 
struct sigaction sa; 

sa.sa_handler = handler; 
sa.sa_flags = SA_RESETHAND; 
timer.it_value.tv_usec = 0; 
timer.it_value.tv_sec = 1; 
timer.it_interval.tv_sec = 0; 
timer.it_interval.tv_usec = 0; 
sigaction(SIGALRM, &sa, 0); 
setitimer(ITIMER_REAL, &timer, 0); 

如何在退出处理函数并进入下面的while循环后重新启动计时器。我是否需要重新初始化所有内容或只需致电setittimer?您使用

while(pause() == -1) 
{ 
    // goes in here after handler function.. what needs to go here to restart timer? 
} 

回答

1

辛格SA_RESETHAND您需要再次通话双方sigactionsetitimer。我建议你把它放在一个函数中,这样你就不必编写代码来启动(或重新启动)两次或更多的定时器。

+0

你会推荐这个函数具有所有的初始化属性,或者只是sigaction和setittimer调用? – Lucas 2012-01-12 08:14:57

+0

@Lucas所有的初始化也是如此。 – 2012-01-12 08:16:10

+0

干杯。很有帮助。 – Lucas 2012-01-12 08:38:55