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'를 사용하는 것이 안전합니까? 하지만 아마도 여기 괜찮을 것입니다. –
그러나'timer_settime()'은 [ok]입니다 (http://www.kernel.org/doc/man-pages/online/pages/man7/signal.7.html). –