precisa de programas que ilustrem o uso das funções settimer e alarme no GNU C
Alguém pode ilustrar o uso da função settimer ou alarme no gnu C, com algumasexemplos de programas ,por favor ?
Eu tenho um programa que processa continuamente alguns dados e preciso definir um timer / alarme que dispara a cada t segundos, em resposta ao qual preciso armazenar os dados processados em um arquivo. Essa gravação de arquivo deve ser assíncrona <ou seja, o processamento de dados e a gravação de arquivos não devem esperar um pelo outro>. Examinei as páginas da biblioteca GNU C, mas não conseguia entender muito ..
[EDITAR]
Eu recebi este programa:
#include <stdio.h>
#include <signal.h>
#include <sys/time.h>
#define INTERVAL 1
int howmany = 0;
void alarm_wakeup (int i)
{
struct itimerval tout_val;
signal(SIGALRM,alarm_wakeup);
howmany += INTERVAL;
printf("\n%d sec up partner, Wakeup!!!\n",howmany);
tout_val.it_interval.tv_sec = 0;
tout_val.it_interval.tv_usec = 0;
tout_val.it_value.tv_sec = INTERVAL; /* 10 seconds timer */
tout_val.it_value.tv_usec = 0;
setitimer(ITIMER_REAL, &tout_val,0);
}
void exit_func (int i)
{
signal(SIGINT,exit_func);
printf("\nBye Bye!!!\n");
exit(0);
}
int main ()
{
struct itimerval tout_val;
tout_val.it_interval.tv_sec = 0;
tout_val.it_interval.tv_usec = 0;
tout_val.it_value.tv_sec = INTERVAL; /* 10 seconds timer */
tout_val.it_value.tv_usec = 0;
setitimer(ITIMER_REAL, &tout_val,0);
signal(SIGALRM,alarm_wakeup); /* set the Alarm signal capture */
signal(SIGINT,exit_func);
while (1)
{
//printf("!");
}
return 0;
}
Mas parece que não posso fazer nada enquanto o cronômetro está ligado. O que devo modificar para atender às minhas necessidades? Pl suger .. [/ EDIT]