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