#include #include #include #include main(int argc, char *argv[]) { int pid; int i; int n; // vérification d'usage if(argc != 2) { fprintf(stderr,"usage: %s \n",argv[0]); exit(1); } n = atoi(argv[1]); if(n < 1) { fprintf(stderr,"Le nombre doit être >= 1\n"); exit(1); } printf("Je suis P1, mon pid est %d\n",getpid()); for(i=1;i<=n;i++) { pid=fork(); switch(pid) { case -1 : perror("fork"); exit(1); case 0 : printf("Je suis G%d (fils gauche), mon pid est %d, mon père est le %d\n",i,getpid(),getppid()); break; default : /* code du père */ pid=fork(); switch(pid) { case -1 : perror("fork"); exit(1); case 0 : printf("Je suis D%d (fils droit), mon pid est %d, mon père est le %d\n",i,getpid(),getppid()); exit(0); default : break; } wait(NULL); wait(NULL); exit(0); } } exit(0); }