Processus fils et pere avec fork()

Fermé
dr_melik Messages postés 43 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 16 octobre 2009 - 14 déc. 2008 à 15:26
 mouhamedy3 - 23 mars 2014 à 13:22
Bonjour,
je voudrais savoir comment peut on créer 2 processus fils à partir d'un meme pere
merci d'avance et je serais content de m'aider .
A voir également:

3 réponses

tu fais le test .donc si le pid elle sur le pére donc fork()=1 sinom fork()=-1
1
bonjour pour créer plusieur files on fera une boucle for si 2 fils donc
(for i=0;i<2;i++)
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
14 déc. 2008 à 16:05
Salut,

Tu commence par forker une fois, puis tu vérifies si ça te retourne pas 0 (ce qui voudrait dire que tu es dans le fils),
et puis tu reforkes.
#include <unistd.h>

int main()
{
   if (fork() > 0) {
        fork();
   }
   wait(0);
   return 0;
}
-2
dr_melik Messages postés 43 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 16 octobre 2009 6
14 déc. 2008 à 16:46
merci, mais dans ce cas là que je fais une petite confusion
quand on fais le premier fork le père P0 crée un fils P1
et la 2eme fork on va créer 2 fils (n'est ce pas) le P1 crée un fils P2 et P0 va créer aussi un fils P3
donc on a plus que 2 processus
est ce qu'on peut pas supprimer P2 , ou bien c'est la seule solution et merci une autre fois.
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527 > dr_melik Messages postés 43 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 16 octobre 2009
14 déc. 2008 à 17:00
Justement non, grâce à la condition if, on vérifie qu'on est bien dans le père et donc lui seule appelera le deuxième fork.
C'est vrai que c'est pas facile.
Lis-donc ce truc et dis moi si tu comprends mieux:
http://www.commentcamarche.net/faq/sujet 10611 que fait un fork
0
dr_melik Messages postés 43 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 16 octobre 2009 6 > kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016
14 déc. 2008 à 17:19
merci ,donc si fork() =0 alors le fils va appeler le fork().
mais si on veut que les 2 fils précédent créent 2 autres fils, comment on va savoir on est dans quel fils
c à d quel fils va utiliser le fork par ce ke normalement ils vont avoir tout les deux un fork=0, si j'ai bien compris.
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527 > dr_melik Messages postés 43 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 16 octobre 2009
14 déc. 2008 à 17:32
Euh...je comprends pas bien ta question.
0
dr_melik Messages postés 43 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 16 octobre 2009 6 > kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016
14 déc. 2008 à 17:39
je veux dire que si on veut faire le meme travail qu'on a fait pour le pere sur les 2 fils crées.
c-à-d si on veut que chaque fils crée lui même 2 autres fils donc devient un père et on aura une sorte d'arbre .
et le premier père devient disons un grand-père. tu as compris.
comment peut-on faire cela.
0