sa_handler une fois avec un & une fois sans ?!
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 :
Code:
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();
} |
Exemple 2 :
Code:
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);
} |
Pourquoi dans l'un il y a un & et pas dans l'autre ?!