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 : 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();
}
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
14
15
16
17
18
19
20
 
 
void Recuperation(int sig) {
   static compt = 0;
   if (++compt == 5) {
      printf("J’en 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 ?!