Utilisation de fork()
adiloc4444
Messages postés
2
Statut
Membre
-
Ju_ju_12 Messages postés 14 Statut Membre -
Ju_ju_12 Messages postés 14 Statut Membre -
Bonsoir.
J'ai du mal a comprendre l'effet de cette fonction surtout lorsqu'il s'agit des boucles.
Voila un petit exercice qui me gène :
void main {
int i,f,x;
x=1;
For(i=0; i<3;i++) {
f=fork()
if(f==0) { x=x*2;
printf( " pid %d : %d" ,getpid() , x);
}
}
exit(0);
}
Si je me trompe pas, le processus père va créer 3 processus fils avex les valeurs de x respctivement 2,4 et 8.
je suis pas convaicu .j'ai besoin de votre aide svp !!
Merci d'avance.
J'ai du mal a comprendre l'effet de cette fonction surtout lorsqu'il s'agit des boucles.
Voila un petit exercice qui me gène :
void main {
int i,f,x;
x=1;
For(i=0; i<3;i++) {
f=fork()
if(f==0) { x=x*2;
printf( " pid %d : %d" ,getpid() , x);
}
}
exit(0);
}
Si je me trompe pas, le processus père va créer 3 processus fils avex les valeurs de x respctivement 2,4 et 8.
je suis pas convaicu .j'ai besoin de votre aide svp !!
Merci d'avance.
A voir également:
- Utilisation de fork()
- Utilisation chromecast - Guide
- Télécharger gratuitement notice d'utilisation - Guide
- Impossible d'utiliser l'outil déplacement car la couche de destination est masquée ✓ - Forum Graphisme
- Vous avez utilisé ce numéro de téléphone à de trop nombreuses reprises - Forum Gmail
- La ressource demandée est en cours d'utilisation ✓ - Forum Logiciels
5 réponses
Avec fork tu crée des processus lourds donc espace mémoire non partagé meme par les ariables globales.
Le PID du fils vaut 0 il y a toujours des if de ce style quand tu bosse sur avec des fork peut etre cui la t'aidera a comprendre
http://www.jecompile.com/viewthread.php?tid=53
mais en gros 2 fais 'fois 2' sur le nb de processus crées a chaque fork ;-)
Le PID du fils vaut 0 il y a toujours des if de ce style quand tu bosse sur avec des fork peut etre cui la t'aidera a comprendre
http://www.jecompile.com/viewthread.php?tid=53
mais en gros 2 fais 'fois 2' sur le nb de processus crées a chaque fork ;-)
A toi de faire les tests en complétant ton code. Voici un exemple à adapter à ton OS:
Ce code n'est pas tout à fait correct car on doit attendre la fin des fils avant de terminer le programme. Mais ceci n'est qu'un exemple pour 'fork'.
Bonne continuation.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
int i, f, x = 1;
for(i=0; i<3; i++)
{
if ((f = fork()) == -1)
{
printf ("Erreur fork\n");
return (EXIT_FAILURE);
}
if (f==0)
{
x = x*2;
printf(" fils: pid %d : x = %d\n" ,getpid() , x);
}
else
printf(" père: pid %d : x = %d\n" ,getpid() , x);
}
return (EXIT_SUCCESS);
}Ne sois pas surpris par le résultat; le programme fonctionne bien et , bien sûr, je te laisse interpréter ce résultat qui est plein d'enseignements.
Ce code n'est pas tout à fait correct car on doit attendre la fin des fils avant de terminer le programme. Mais ceci n'est qu'un exemple pour 'fork'.
Bonne continuation.
Si je ne me trompe pas, les processus père et fils (ainsi que frères) ne partagent pas la même mémoire.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question