IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

création de n processus fils avec fork


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 27
    Par défaut création de n processus fils avec fork
    Bonjour,

    Je dois réaliser un programme qui va créer n processus en prenant la forme de cet arbre :
    Nom : 19d5bf1c13bb566111197147721614ce.png
Affichages : 8585
Taille : 2,3 Ko

    J'ai réalisé le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    int main()
    {
    	int i,n;
    	if(scanf("%d",&n)!=1)
    		return -1;
    	for(i=0; i<n; i++){
    		fork();
    		printf("pid: %d   ppid: %d\n", getpid(), getppid() );
     
     
    	}
    	sleep(1);
    	return 0;
    }
    Sauf que ceci ne fait pas ce qui met demandé, je ne me retrouve pas avec n processus fils, mais avec bien plus de processus créé qui n'ont pas tous comme parent le premier processus.

    exemple de sortit avec 3
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    pid: 3103   ppid: 2676
    pid: 3103   ppid: 2676
    pid: 3103   ppid: 2676
    pid: 3106   ppid: 3103
    pid: 3105   ppid: 3103
    pid: 3105   ppid: 3103
    pid: 3107   ppid: 3105
    pid: 3104   ppid: 3103
    pid: 3104   ppid: 3103
    pid: 3104   ppid: 3103
    pid: 3109   ppid: 3104
    pid: 3108   ppid: 3104
    pid: 3108   ppid: 3104
    pid: 3110   ppid: 3108
    J'ai donc dans ce cas 10 processus fils au lieu de 3 et qui non pas tous comme père le processus 3103.

    Pourriez-vous m'éclaircir sur comment réaliser ce programme. Ainsi que m'expliquer mes erreurs.

    Merci

  2. #2
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    dans ton code une fois que tu as forké tu te retrouves avec 2 processus "identiques", qui continuent d'exécuter le même code l'un et l'autre, autrement dit chaque processus fils créé cherche à finir la boucle for et crée lui aussi de nouveaux processus enfants, le but étant évidemment d'éviter ça

    tu devrais t'intéresser au retour de la fonction fork()

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 27
    Par défaut
    merci
    j'ai éviter le problème de création de nouveau processus lors de l'exécution des processus fil de la manière suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(fork()==0){
            printf("pid: %d   ppid: %d\n", getpid(), getppid() );
    	return 0;
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lancer un processus avec fork
    Par snfever dans le forum Langage
    Réponses: 2
    Dernier message: 22/05/2010, 18h05
  2. création de plusieurs processus fils
    Par batoule80 dans le forum C
    Réponses: 3
    Dernier message: 02/04/2010, 21h08
  3. Réponses: 2
    Dernier message: 10/02/2009, 20h06
  4. Réponses: 5
    Dernier message: 11/04/2008, 13h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo