Pour le code d'origine, c'est à peu près ça oui. (va falloir que je revois l'histoire du wait par contre... ça ne me dit rien ce truc.
)
Sauf que le fils2 de type pid_t n'est pas «vide». Il contient une valeur aléatoire (suivant ce qu'il y avait en mémoire avant).
On pourrait donc tomber sur une exécution ou ce fils2 vaut 0, auquel cas le deuxième if sera exécuté à la fois par le père et le fils. En supposant que le père soit le plus rapide, ça donnerait donc :
1 -1
0 1
1 0
Mais je pense qu'il y a de la confusion dans le code initial sur les rôles de fils1 et fils2, et sur la valeur de retour de fork.