Advertisement
Guest User

progsys1b

a guest
Jun 30th, 2015
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.88 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4. #include <errno.h>
  5. #include <sys/wait.h>
  6.  
  7. int main(){
  8.     int statut;
  9.     int pid[3];
  10.     pid[0] = fork();
  11.     if(pid[0] > 0){
  12.         pid[1] = fork();
  13.         if(pid[1] > 0){
  14.             waitpid(pid[0], &statut, 0);
  15.             waitpid(pid[1], &statut, 0);
  16.             printf("Processus 1 : PID %d - PPID %d\n", getpid(), getppid());
  17.         }
  18.         else if(pid[1] == 0){ //P3
  19.             printf("Processus 3 : PID %d - PPID %d\n", getpid(), getppid());
  20.         }
  21.         else{
  22.             perror("Erreur de fork"); exit(errno);
  23.         }
  24.     }
  25.     else if(pid[0] == 0){ //P2
  26.         pid[2] = fork();
  27.         if(pid[2] > 0){
  28.             printf("Processus 2 : PID %d - PPID %d\n", getpid(), getppid());
  29.         }
  30.         else if(pid[2] == 0){
  31.             sleep(1);
  32.             printf("Processus 4 : PID %d - PPID %d\n", getpid(), getppid());
  33.         }
  34.         else{
  35.             perror("Erreur de fork"); exit(errno);
  36.         }
  37.     }
  38.     else{
  39.         perror("Erreur de fork"); exit(errno);
  40.     }
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement