Fonctionnement fork()

Résolu/Fermé
x-timas Messages postés 124 Date d'inscription vendredi 7 mars 2008 Statut Membre Dernière intervention 17 décembre 2010 - 26 févr. 2009 à 22:26
x-timas Messages postés 124 Date d'inscription vendredi 7 mars 2008 Statut Membre Dernière intervention 17 décembre 2010 - 27 févr. 2009 à 10:56
Bonsoir tout le monde,

J'ai donc plusieurs questions :

#################Question sur fork##################
fork permet de générer un processus fils. On peut l'utiliser de la manière suivante:
Code :


$pid=fork();
if $pid==0
{
#Le fils (processus A') est né et éxécute le code entre les accolades
}
else
{
#C'est le père (processus A) qui éxécute le code entre les accolades
}



Mes questions la-dessus:
1) Est-ce que le processus fils A' a accès aux variables définies dans A et inversement ???
2) Est-ce que les processus A et A' s'éxécute simultanément si l'on décide de ne pas mettre le code suivant dans A:
Code :


waitpid($pid,0) #ou wait()



3) Si j'écris le code suivant:
Code :


$pid=fork();
if $pid==0
{
#Le fils (processus A') est né et éxécute le code entre les accolades
$pid2=fork();
if($pid2==0)
{
#petit-fils ??? (processus A'')
}
waitpid($pid2,0);
}
else
{
#C'est le père (processus A) qui éxécute le code entre les accolades
}



Est-ce que A'' ($pid2) est le petit-fils de A. Si oui, A'' a t'il accès aux variables de A ?

4) Est-ce que finalement, le code de dessus revient pas à faire:
Code :


$pid=fork();
$pid2=fork();
if $pid==0
{
#Le fils 1 (processus A') est né et éxécute le code entre les accolades
}

if($pid2==0)
{
#Le fils 2 (processus A'') est né et éxécute le code entre les accolades
}


#C'est le père (processus A) qui éxécute le code entre les accolades


Voila

Merci d'avance

c'est à dire lancer 2 fils ??
A voir également:

5 réponses

legulysse Messages postés 121 Date d'inscription mercredi 4 juillet 2007 Statut Membre Dernière intervention 16 janvier 2010 15
26 févr. 2009 à 22:30
j'ai pas lu, mais peut etre que ça t'aidera :

http://www.commentcamarche.net/faq/sujet 10611 que fait un fork
0
x-timas Messages postés 124 Date d'inscription vendredi 7 mars 2008 Statut Membre Dernière intervention 17 décembre 2010 1
26 févr. 2009 à 22:50
Merci encore pour le lien. C'était utile mais malheureusement ça ne répond pas à ce que j'ai demandé. (il présente essentiellement des notions de bases)

Quelqu'un pourra m'aider peut-être?
0
x-timas Messages postés 124 Date d'inscription vendredi 7 mars 2008 Statut Membre Dernière intervention 17 décembre 2010 1
26 févr. 2009 à 22:35
Merci, je vais y jeter un coup d'oeil
0
Oh la la, que de questions!
1) Les variables connues au moment du fork seront ensuite connues des deux processus; mais le fils hérite d'une copie de l'environnement du père, c'est dire qu'ensuite chaque modification dans un processus n'affectera pas les variables de l'autre processus. Ceci n'est pas vrai pour les descripteurs de fichiers qui, eux, restent 'communs' aux deux processus.
2) Bien sûr que les deux processus s'exécutent en parallèle (en sous-entendant le sens réel) et le wait qui ne fait qu'attendre la fin du processus fils ne change rien car on peut considérer que cette attente du père est une exécution.
3) Il ne faut pas ainsi se poser la question: A et A' partagent leur environnement au moment du fork, de même pour A' et A". Il se peut que A et A" partagent les mêmes variables si A' ne les a pas modifiées; mais attention ce ne seront que des copies.
4) Non ce n'est pas pareil car:
- cas n° 3: A" est connu de A'
- cas n° 4: A" est connu de A
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
26 févr. 2009 à 23:38
1) les variables du pere et du fils sont distinctes donc si A' modifie sa variable ça ne va pas modifier celle du pere

2) oui les deux processus s'execute simultanement

3) oui A'' est le fils de A' donc petit fils de A pour la question des variable voir la question 1

4) non les code sont different dans le deuxieme tu va cree 4 processus car le pere va lancé 2 fils et 1 des fils va en lancer 1 alors que le premier code tu a 3 processus
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
x-timas Messages postés 124 Date d'inscription vendredi 7 mars 2008 Statut Membre Dernière intervention 17 décembre 2010 1
27 févr. 2009 à 10:56
C'est parfait.

Je vous remercie beaucoup!!
0