Création d'un arbre à 13 processus en C sous Linux avec fork [Résolu]

-
Bonjour.

Le but de mon exercice est de créer un père, 3 fils et 9 petits fils et que l'utilisateur demande différentes hauteurs. Pour la hauteur 0, il n'y a que le père. Pour la hauteur 1, il y a 4 processus pères et 3 fils. Pour la hauteur 2, il y aura les 13 processus. On choisira avec la fonction scanf.

Voici mon programme, mais je n'ai fait qu'un père et 3 fils, chaque fils ayant lui-même 2 fils.
Mon problème est que je n'arrive pas à utiliser la fonction scanf dans mon programme.
Merci de m'aider surtout que je suis débutante en programmation C sous Linux.

#include <stdio.h>
#include <unistd.h>

int main(void)
{
  if (fork() != 0)
  {
    if (fork() != 0)
    {
      printf("pere= %d \n", getpid());
      if (fork() == 0)
      {
        printf("fils3=%d pere= %d\n", getpid(), getppid());
        if (fork() != 0)
        {
          if (fork() == 0)
            printf("P6= %d fils3= %d \n", getpid(), getppid());
        }
        else
          printf("P7= %d fils3= %d \n", getpid(), getppid());
      }
    }
    else
    {
      printf("fils2= %d pere= %d\n", getpid(), getppid());
      if (fork() != 0)
      {
        if (fork() == 0)
          printf("P4= %d fils2= %d \n", getpid(), getppid());
      }
      else
        printf("P3= %d fils2= %d \n", getpid(), getppid());
    }
  }
  else
  {
    printf("fils1= %d pere = %d \n", getpid(), getppid()); 
    if (fork() != 0)
    {
      if (fork() == 0)
        printf("P8= %d fils1= %d \n", getpid(), getppid());
    }
    else
      printf("P9= %d fils1= %d \n", getpid(), getppid());
  }
  while (wait(0) != -1);

  return 0;
}
Afficher la suite 

Votre réponse

1 réponse

Messages postés
3830
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
19 novembre 2018
0
Merci
Bonjour.

J'ai édité ton message afin de corriger les fautes d'orthographes, ré-indenter ton code, ajouter la coloration syntaxique (via les balises de code) et rendre ta question plus lisible. Merci d'y penser pour la prochaine fois.

Pour répondre à ta question:
  • Pour scanf, il suffit de lire la doc ou les exemples sur le net: http://xrenault.developpez.com/tutoriels/c/scanf/
  • Le plus simple (pas forcément le plus élégant) est de créer 3 fonctions faisant chacune une des tâches demandées, et d'appeler la bonne fonction via le choix récupéré via scanf.
  • N'oublie pas de gérer le cas où fork renvoie une valeur négative (un fork peut échouer !).


Améliorer votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
Commenter la réponse de cptpingu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.