Advertisement
Guest User

Untitled

a guest
Apr 8th, 2020
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.40 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <sys/types.h>
  4. #include <unistd.h>
  5. #include <errno.h>
  6. #include <wait.h>
  7.  
  8. void ex4 (int tab[][2])
  9. {
  10.     int status;
  11.     pid_t pid;
  12.     FILE *f;
  13.     int stat;
  14.    
  15.     for( int i = 0; i < 4 ; i++ ) // pour créer 4 fils
  16.         switch(pid=fork())        // avec fork
  17.         {
  18.             case -1 : //  fork n'a pas marché
  19.                 perror("fork");
  20.                
  21.                 exit(errno);
  22.                
  23.             case  0 : // Code du fils
  24.                 if( i > 1)  //envoie les valeurs du tableau par la valeur de retour du processus
  25.                     exit( tab[1][i%2] );
  26.                 exit(tab[0][i%2]);
  27.                 break;
  28.            
  29.             default : // Code du père
  30.                 wait(&status); //attend un fils
  31.                 if ( WIFEXITED(status) )
  32.                 { //si un fils n'a pas d'erreur
  33.                     printf(" %d ", WEXITSTATUS(status)); // récupère la valeur de retour
  34.                     if( i == 1 )
  35.                         printf("\n"); //pour afficher les valeurs comme une matrice carrée
  36.                 }
  37.                 else
  38.                 {
  39.                     exit(errno);
  40.                 }
  41.         }
  42. }
  43.  
  44. int main(int argc, char **argv)
  45. {  
  46.     int tab[2][2] =
  47.                 { {1,2},
  48.                   {3,4}
  49.                 };
  50.     ex4(tab);
  51.     exit(0);
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement