Есть некая программа, в которой используется интервальный таймер. Как я понял, данный таймер нужен для отсчета промежутка времени, по истечении которого процессу передается определенный сигнал (SIGALRM, SIGVTALRM, SIGPROF). В коде я изменяю временной промежуток таймера типа ITIMER_REAL: 100мс, 300мс, 500мс, компилирую, выполняю с выводом результата в файл. Итого выходит 3 одинаковых по размеру файла, соответственно, с одинаковым содержимым (100 итераций стишка).
Вопрос: Что должно измениться в выводе программы? Или, может должно измениться время выполнения программы?
#include <signal.h>
#include <stdio.h>
#include <string.h>
#include <sys/time.h>
#include <unistd.h>
#include <stdlib.h>
void timer_handler (int signum)
{
static int count=0;
printf("\nТаймер протикал %d раз\n\n",++count);
if(count>=100)
exit(0);
}
int main()
{
int i;
struct sigaction sa;
struct itimerval timer;
char stix1[]={"У попа была собака,"};
char stix2[]={"он ее любил."};
char stix3[]={"Она съела кусок мяса,"};
char stix4[]={"он её убил."};
char stix5[]={"Схоронил ее под камнем,"};
char stix6[]={"а на камне написал:"};
memset(&sa,0,sizeof(sa));
sa.sa_handler=&timer_handler;
sigaction(SIGALRM,&sa,NULL);
/* Timer activate within 500 millisecond...*/
timer.it_value.tv_sec=0;
timer.it_value.tv_usec=500000;
/*...and will be activated within other 500 milliseconds*/
timer.it_interval.tv_sec=0;
timer.it_interval.tv_usec=500000;
/* Begin of virtual timer.*/
setitimer(ITIMER_REAL,&timer,NULL);
do
{
sleep(1);
for(i=0;i<sizeof(stix1);i++)
printf("%c",stix1[i]);
printf("\n");
for(i=0;i<sizeof(stix2);i++)
printf("%c",stix2[i]);
printf("\n");
for(i=0;i<sizeof(stix3);i++)
printf("%c",stix3[i]);
printf("\n");
for(i=0;i<sizeof(stix4);i++)
printf("%c",stix4[i]);
printf("\n");
for(i=0;i<sizeof(stix5);i++)
printf("%c",stix5[i]);
printf("\n");
for(i=0;i<sizeof(stix6);i++)
printf("%c",stix6[i]);
printf("\n");
}
while(1);
}