2
我想重复建立一个SIGALRM并等到它熄灭,然后重新执行。在我的处理函数中我有:如何重复SIGALRM?
void handler(int signum)
{
struct itimerval timer;
struct sigaction sa;
sa.sa_handler = handler;
timer.it_interval.tv_sec = 0;
timer.it_interval.tv_usec = 0;
timer.it_value.tv_usec = 0;
timer.it_value.tv_sec = 1000;
sigaction(SIGALRM, &sa, 0);
setitimer(ITIMER_REAL, &timer, 0);
printf("pause for me\n");
pause();
}
,并在我的主,我有:
int main(void)
{
handler(0);
return 0;
}
然而,它是所有重复两次,然后摊位。我希望它继续重复。有什么问题?
从信号处理程序中使用'setitimer'是否安全?但是,在这里可能是好的。 – 2012-01-12 01:52:50
但'timer_settime()'是[ok](http://www.kernel.org/doc/man-pages/online/pages/man7/signal.7.html)。 – 2012-01-12 01:56:00