Code :
 - #include<stdio.h>
 - #include<stdlib.h>
 - #include<unistd.h>
 - int main(void){
 -  pid_t pid_fils[5];
 -  int i;
 -  for(i=0; i<4; i++){
 -   pid_fils[i]=fork();
 -   if(pid_fils[i]==-1){
 -    printf("error" );
 -    exit(1);
 -   }
 -   if(pid_fils[i]==0){
 -    printf("je suis le fils%d\n", i+1);
 -    break;
 -   }
 -  }
 - return 0;
 - }
 
  | 
 
Harkonnen a écrit :
 
 3 - J'avoue que je ne comprends pourquoi ton énoncé suppose qu'un fils pourrait créer d'autres fils. Si tu fais 5 fork(), tu vas créer 5 processus enfants du processus qui appelle le fork(), à aucun moment les fils ne crééront de fils dans la boucle for (ou alors tu n'as pas posté tout ton énoncé)
   | 
 
Je n'ai programmé pas en C depuis fort longtemps mais le fork copie la mémoire du processus et place le pointeur d'exécution du nouveau processus exactement après le fork. Dans ce cas-ci, chaque fils commence en pleine boucle for et hérite de la valeur de i du parent lors du fork.
Dans le cas sans break, cela peut produire une arborescence d'environ 4*(4 +1)/2 processus.