Bon si jme goure pas le prog fonctionne comme ça :
De base tu as a et b = 0.
Tu fais récupères la valeur de fork dans le pid_t fils1.
A ce niveau tu as 2 "processus" qui tournent.
Le processus père qui est le programme que tu as lancé.
Un processus fils qui a été crée au moment de l'appel de fork() et qui hérite de tout le code qui se trouve après.
Le processus père aura dans le pid_t fils1 une valeur un peu bizarre qui sera l'identifiant du processus fils qui a été crée.
Le processus fils aura son pid_t à 0.
Ensuite voilà ce qui se passe pour le processus père :
Premier If, son pid_t fils1 est différent de zéro puisqu'il contient l'id de son fils. DOnc on zappe le bloc.
Deuxième if, de même.
La y a un wait(NULL), si jme souviens bien il va se mettre en attente jusqu'à ce que ses fils soient terminés (bref même si me goure c'est pas très important ici).
Pour le processus fils qui a été crée :
premier if, son pid_t fils1 vaut bien 0 puisqu'il est le processus qui a été crée à ce moment là. Donc il entre dans la boucle.
b est incrémenté et vaut désormais 1.
Puis y a le printf qui va donc afficher "0 1" car a vaut 0 et b vaut 1.
Il ne rentre pas dans le 2eme if vu que pid_t fils2 est vide.
Il attend et doit surement se terminer.
Puis le processus père se termine à son tour.