2012-01-12 4 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

+0

@ 루카스 모든 초기화 역시 마찬가지입니다. –

+0

건배. 매우 도움이됩니다. – Lucas

관련 문제