Bonjour,
J'aurais besoin de vos lumières sur qqch qui me préoccupe depuis que je m'en suis rendu compte !
Pourquoi lors de la gestion d'un signal, une fois on met un & devant l'appel de la fonction qui gère le signal et une autre fois pas ! Petit exmple pour être un peu plus claire :
Exemple 1 :
Exemple 2 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 void handler(int sig){ printf("signal SIGINT reçu\n"); exit(0); } int main(){ struct sigaction nvt, old; memset(&nvt,0,sizeof(nvt)); nvt.sa_handler=&handler; sigaction(SIGINT,&nvt,&old); pause(); }
Pourquoi dans l'un il y a un & et pas dans l'autre ?!
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 void Recuperation(int sig) { static compt = 0; if (++compt == 5) { printf("Jen ai assez!!\n"); exit(0); } else { printf("OK je recupere le signal SIGINT\n"); } } int main() { struct sigaction nvt, old; memset(&nvt,0,sizeof(nvt)); nvt.sa_handler = Recuperation; sigaction(SIGINT, &nvt, &old); printf("Taper 5 ^C pour arreter le programme\n"); while(1); }
Partager