besoin de programmes qui illustrent l'utilisation de settimer et des fonctions d'alarme dans GNU C

Quelqu'un peut-il illustrer l'utilisation de settimer ou la fonction d'alarme dans C de gnu , avec quelques des exemples de programmes ,s'il vous plaît ?

J'ai un programme qui ne cesse de traitement de certaines données , et j'ai besoin de mettre un timer /alarme qui se déclenche toutes les t secondes , à la suite de quoi , j'ai besoin de stocker les données traitées dans un fichier. Ce fichier a écrit asynchrone < c'est à dire le traitement des données et l'écriture de fichier ne doivent pas attendre les uns des autres > . Je suis passé par la Bibliothèque C de GNU pages , mais je ne pouvais pas comprendre beaucoup de choses..

[MODIFIER]

J'ai obtenu ce programme :

#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;

}

Mais il me semble que je ne peut rien faire pendant que la minuterie est sur..
Que dois-je modifier pour l'adapter à mes besoins ? Pl suggèrent..
[/EDIT]

OriginalL'auteur trinity | 2010-01-18