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:
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 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
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.
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...
Voici mon code:
http://rapidshare.com/files/3340422020/tpFork3.c
Un immense merci à ceux qui accepteront de m'aider !![]()
Partager