Les fils meurent trop vite!! [C, Unix, fork()] - C++ - Programmation
Marsh Posté le 22-09-2002 à 19:27:41
c'est logique, tu as mis ton waitpid dans ta boucle de craetion des processus. alors ton waitpid est fait avant que le prochain fils soit cree.
d'abord tu fais ta boucle de creation, ensuite tu fais une seconde boucle, qui fait des waitpid sur chacun des fils.
ensuite tu tues le processus principal.
Marsh Posté le 22-09-2002 à 20:43:56
NKTH a écrit a écrit : Je vais essayer ca. Merci beaucoup. |
de rien
Marsh Posté le 22-09-2002 à 19:14:17
bonjour,
Voila je dois creer une application toute simple qui consiste a cree 16 process fils a partir d`un process mere. C`est la mere qui doit creer les 16 fils. Et c`est la mere qui doit mourir en dernier.
Le probleme c`est que lorsque je cree un fils, il meurt avant meme que le prochain fils soit cree.
Je voudrais savoir s`il existe un moyen pour les garder en vie le temps que tous les fils soient crees.
Merci.
Voici mon code (portion):
parentID = getpid() ;
for ( i = 0 ; i < 16 ; i++)
{
if( getpid() == parentID )
{
if ((childID = fork()) != 0)
/* si le test passe alors c`est la mere */
{
/* la mere attend que son fils soit mort avant de
mourir*/
waitpid(childID, (int *)NULL, WUNTRACED) ;
}
else
/* process fils */
{
printf( "\nHi, I am the child #%d\n"
"my PID is %d\n"
"my mother is %d\n\n"
, i+1 , getpid() , getppid() ) ;
}
}
}