Ce que j'ai écrit est incorrect. Sur les huit processus il n'y en a qu'un pour lequel les trois entiers result1, result2 et result3 sont nuls. Car d'après le manuel de fork :
fork() crée un nouveau processus en copiant le processus appelant. Le nouveau processus, qu'on appelle fils, est une copie exacte du processus appelant.
Les valeurs précédentes des entiers results1 et results2 sont donc aussi copiées.
Lorsqu'un processus qui a déjà un fils, forke à nouveau, le nouveau fils attendra le premier fils de son père. Cette attente n'est pas obligatoire (car le même processus sera attendu plusieurs fois), mais n'est pas bloquante non plus. cf. le manuel de wait :
Si un fils a déjà changé d'état, ces appels système retournent immédiatement
[^] # Re: deuxième code
Posté par thaddeus . En réponse au message Ordonnancement processus avec wait(). Évalué à 1.
Ce que j'ai écrit est incorrect. Sur les huit processus il n'y en a qu'un pour lequel les trois entiers result1, result2 et result3 sont nuls. Car d'après le manuel de fork :
Les valeurs précédentes des entiers results1 et results2 sont donc aussi copiées.
Lorsqu'un processus qui a déjà un fils, forke à nouveau, le nouveau fils attendra le premier fils de son père. Cette attente n'est pas obligatoire (car le même processus sera attendu plusieurs fois), mais n'est pas bloquante non plus. cf. le manuel de wait :
Et c'est plus simple à coder ainsi.