Как перезапустить таймер? - PullRequest
0 голосов
/ 12 января 2012

Я использую следующий код для установки будильника.

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 Ответ

1 голос
/ 12 января 2012

Одиночка, которую вы используете SA_RESETHAND, вам нужно снова позвонить на sigaction и setitimer.Я предлагаю вам включить его в функцию, чтобы вам не приходилось писать код для запуска (или перезапуска) таймера дважды или более.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...