#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

int main(int argc,char *argv[]) {
  pid_t pid;
  int status;
  pid = fork();
  switch(pid) {
  case -1: // erreur
    exit(1);
  case 0: // fils
    printf("FILS: je travaille\n");
    for (int i=0; i<5; i++) {
      printf("i=%d\n",i);
      sleep(1);
    }
    printf("FILS: j'ai terminé mon travail\n");
    exit(0);
    break;
  default: // père
    printf("PERE: Je vais attendre %d\n",pid);
    waitpid(pid,&status,0);
    if (WIFEXITED(status)) {
      printf("Il s'est terminé normalement en faisant appel à exit(%d)\n",WEXITSTATUS(status));
    } else {
      printf("Il a terminé bizarrement\n");
    }
    printf("PERE: C'est la fin pour moi\n");
    break;
  }
  exit(0);
}