[timer en C sous linux] comment stopper un timer
Bonjour
un histoire de temps !!
Voici un timer en C qui fonctionne sur un système unix (par appel système).
Une fois lancé ce timer fonctionne en boucle, a chaque fin de la tempo il exécute proc.
Comment fait on pour l'arrêter pendant son exécution (cf dernieres lignes du programme)
avez-vous des pistes?
Merci
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| #include <stdio.h>
#include <signal.h>
#include <sys/time.h>
#include <errno.h>
extern int errno;
void proc(){/*procedure executee lorsque le signal SIGALRM est recu */
fprintf(stdout,"5 secondes ecoulees!\n");
}
main(){
char input[30];
struct itimerval timer; /
#ifdef BSD
signal(SIGALRM,proc);
#else
struct sigaction act;
act.sa_handler = proc;
act.sa_flags = SA_RESTART;
if(sigaction(SIGALRM, &act, NULL) == -1) {
fprintf(stderr,"error %d in sigaction\n");
}
#endif
/* Config du timer */
timer.it_interval.tv_sec = 5;
timer.it_interval.tv_usec = 0;
timer.it_value.tv_sec = 5;
timer.it_value.tv_usec = 0;
setitimer(ITIMER_REAL, &timer, 0);
while(1){
while((fscanf(stdin,"%30s",input)<0)&&(errno=EINTR));
fprintf(stdout,"%s\n",input);
if(!strncmp(input,"quit",5)){ /* demade de stop timer*/
memset(&timer, 0, sizeof(timer)); /* MARCHE PAS*/
}
}
} |