Я пытаюсь реализовать таймер, который непрерывно отсчитывает определенное количество времени во время работы программного обеспечения.Я написал грязный код, чтобы попытаться понять, как работает sys / time.h.
Насколько я понимаю, если я установлю в своей структуре it_interval ненулевое значение, таймер снова начнет отсчет, как только будет выполнен подсчет сохраненного значения.в it_value struct.
Однако мой код останавливается.Может кто-нибудь сказать мне, что мне не хватает в моем коде, пожалуйста?Кроме того, я использую Linux.
#include <sys/time.h>
#include <stdio.h>
#include <stdint.h>
int main(void) {
struct itimerval timer1;
timer1.it_interval.tv_sec = 5;
timer1.it_interval.tv_usec = 0;
timer1.it_value.tv_sec = 5;
timer1.it_value.tv_usec = 0 ;
setitimer(ITIMER_REAL, &timer1, NULL);
printf( "init interval counter: %ld.%ld\n", timer1.it_interval.tv_sec,
timer1.it_interval.tv_usec);
printf( "init value counter: %ld.%ld\n\n", timer1.it_value.tv_sec,
timer1.it_value.tv_usec );
while(1) {
for (int i = 0; i < 100000000000000; i++){
getitimer(ITIMER_REAL, &timer1);
printf( "end interval counter: %ld.%ld\n",
timer1.it_interval.tv_sec, timer1.it_interval.tv_usec);
printf( "end value counter: %ld.%ld\n\n",
timer1.it_value.tv_sec, timer1.it_value.tv_usec );
}
}
return 0;
}
Мой вывод (сокращенный, конечно):
счетчик конечных интервалов: 5,0
счетчик конечных значений: 0,8821
счетчик конечных интервалов: 5.0Сигналы будильника
Процесс вернул 142 (0x8E) время выполнения: 5,033 с
Заранее спасибо за помощь!