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?