Bonjour à tous !

Je m'exerce dans l'utilisation des forks. Récemment, j'ai conçu un petit algorithme permettant de produire N fils du processus père puis N fils pour chaque fils.

Cependant, j'éprouve beaucoup de difficultés à comprendre le fonctionnement de « vie » des processus. En effet, il arrive que mon processus père (celui qui existait avant le premier fork) se termine avant la fin de mon programme… Mais pas toujours comme le montre mes outputs :

Cas où ça fonctionne:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
Veuillez choisir le nombre de fils du père: 2
Veuillez choisir le nombre de fils des fils: 2
Je suis le pere de pid 20124, mon pere est 19928
Je suis le fils de pid 20126, mon pere est 20125
Je suis le fils de pid 20128, mon pere est 20125
Je suis le fils de pid 20129, mon pere est 20127
Je suis le pere de pid 20125, mon pere est 20124
Je suis le fils de pid 20130, mon pere est 20127
Je suis le pere de pid 20127, mon pere est 20124
Cas où ça ne fonctionne pas:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
Veuillez choisir le nombre de fils du père: 2
Veuillez choisir le nombre de fils des fils: 2
Je suis le pere de pid 20160, mon pere est 19928
Je suis le fils de pid 20162, mon pere est 20161
Je suis le fils de pid 20164, mon pere est 20161
Je suis le fils de pid 20165, mon pere est 20163
Je suis le pere de pid 20161, mon pere est 20160
bash-2.05$ Je suis le fils de pid 20166, mon pere est 20163
Je suis le pere de pid 20163, mon pere est 1
//Le programme ne se termine pas...
j'ai lu beaucoup de documentations sur Internet à propos des instructions wait, waitpid, WNOHANG, WUNTRACED, etc. qui permettraient de contrôler l'extinction des processus. Malheureusement je ne les comprends pas.

Voici mon code:
http://rapidshare.com/files/3340422020/tpFork3.c

Un immense merci à ceux qui accepteront de m'aider !