Bonjour,
Quelqu’un pourrait m'aider à comprendre qu'est-ce qu'elle fait la fonction que j'ai mise en couleur dans le programme suivant ? Pour quoi on a pu mettre la fonction handler dans signal qui se trouve dans la fonction handler elle-même? pour quoi on a mis i comme paramètre de la fonction handler alors qu'on ne l'utilise pas dans la fonction ?
Merci pour vos avis éclairés
Code:#include <stdio.h> #include <ctype.h> #include <fcntl.h> #include <signal.h> #define NFILS 25 int p[2]; int n=10; char c[10]; char s; void handler (int i) { signal (SIGUSR1,handler); read (p[0],&s,1); } main () { int pid[NFILS]; int i; pipe (p); for (i=0;i<NFILS;i++){ switch (pid [i]=fork()) { case -1 : perror ("Erreur de creation"); exit (0); case 0 : /*Fils i*/ signal (SIGUSR1,handler); sprintf (c,"%010d",getpid()); write (p[1],c,10); pause (); printf ("Fils %3d ok (%c) \n",i,s); exit (0); default : /* Pere */ read (p[0],c,10); printf ("pere - passage %3d, apres creation de : %5d (%10s)...",i,pid [i],c); if (atoi(c) == pid [i]) {printf ("ok\n");} break ; } } printf ("Tous les fils sont lances ! (%d)\n",getpid()); write (p[1],"abcdefghijklmnopqrstABCDEFGHIJKLMNOPQRST",NFILS); for (i=0;i<NFILS;i++) kill (pid[i],SIGUSR1); kill (pid[0],SIGUSR1); }
-----