Bonjour,
Est ce que vous pouvez m'aider a comprendre le mécanisme de signaux en s'appuiant sur ce code en fait je voudrais vous poser ces questions :
1/la fonction traite_sigaux comprend un argument (num_signal) qui se charge de lui passer cet argument ??
2/ou est ce qu'on a fait appel a cette routine ?? les deux "IF" ???plus d'explication sur ce point SVP
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 void traite_signaux(int num_signal) { switch (num_signal) { case SIGINT : printf("Interruption reçue, on continue\n"); break; case SIGALRM : printf("Fin d'alarme reçue, tant pis\n"); exit(1); break; default : printf("signal non pris en compte\n"); exit(1); } } int main(void) { char c; //attente du signal if (signal(SIGINT, traite_signaux)==SIG_ERR) exit(1); if (signal(SIGALRM, traite_signaux)==SIG_ERR) exit(1); //attente de CTRL*C pause(); printf("C'est parti\n"); alarm(5); printf("Entrez un caractere avant 5 secondes\n"); c=getchar(); alarm(0); fflush(stdin); printf("caractère frappe : %c\n",c); return 0; }
Partager