Comprendre la fourche unix

Est-ce que n’importe qui peut expliquer pourquoi la ligne contenant “ici” est exécutée 5 fois et comment exactement le programme s’exécute parce que je ne semble pas comprendre comment j’obtiens cette sortie

Sortie:

12958: 0 here 12959: 0 12958: 0 here 12958: 1 here 12960: 1 12958: 0 here 12958: 1 here 

Code:

 #include  #include  #include  #include  #include  int main(){ int i; for(i=0; i<2; i++){ printf("%d: %d here\n", getpid(), i); if(fork()==0){ printf("%d: %d\n", getpid(), i); exit(0); } } for(i=0; i<2; i++){ wait(0); } return 0; } 

Edit: parce que j’exécute Windows sur mon ordinateur, j’ai utilisé ce lien pour vérifier le code, cela pourrait-il être un problème?

Fork crée un processus presque identique, y compris les tampons de sortie. Si ceux-ci ne sont pas vidés avant la fork , les deux processus peuvent finir par imprimer le contenu. Essayez de mettre une fflush(stdout); après le printf du parent.

Il n’est pas censé obtenir le résultat que vous avez mentionné. Comme j’ai testé votre code, ma sortie était la suivante

11194: 0 ici

11194: 1 ici

11195: 0

11196: 1

Peut-être que vous devriez le recomstackr et réessayer?