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

Linux Discussion :

programme en c


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2008
    Messages
    357
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 357
    Par défaut programme en c
    bonjour,
    j'ai fait un programme pour la création de 5 processus(n=5) ,mais dans l'éxecution il crée 1 seul processus( fils pére) Où es l'erreur dans mon code
    merci d'avance
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    #include <stdlib.h>
    #include <stdio.h>
    #include <unistd.h>
    #include <errno.h>
    #include <sys/wait.h>
    int
    main ()
    {
    int i, n;
    printf("entrer le nombre de voitures:  ");
    scanf("%d",&n);
    i=0;
    while(i<n)
    {
     
    pid_t pid_fils;
    do {
    pid_fils = fork ( ) ;
    }
    while ((pid_fils == -1) && (errno == EAGAIN));
    if (pid_fils == -1)
    {
    printf ( "fork( ) impossible, errno=%d\n", errno);
    return (1);
    i++;
    }
    if (pid_fils == 0)
    {
    printf ("Fils : PID=%d, PPID=%d\n",getpid( ) , getppid( ));
    return (0);
    }
     else {
    printf ("Père : PID=%d, PPID=%d\n",getpid( ) , getppid( ));
    wait (NULL);
    return(0);
    }
    }
    }

  2. #2
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Si après le fork tu fais un return dans le code fils et le code père... Ben il n'y a plus personne pour continuer...

    Jc

  3. #3
    Membre éclairé
    Inscrit en
    Novembre 2008
    Messages
    357
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 357
    Par défaut
    Citation Envoyé par fearyourself Voir le message
    Si après le fork tu fais un return dans le code fils et le code père... Ben il n'y a plus personne pour continuer...

    Jc
    j'ai modifier le code, (j'ai suprimé return ) l'execution boucle infini!!!!

  4. #4
    Membre éclairé
    Inscrit en
    Novembre 2008
    Messages
    357
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 357
    Par défaut
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    #include <stdlib.h>
    #include <stdio.h>
    #include <unistd.h>
    #include <errno.h>
    #include <sys/wait.h>
    int
    main ()
    {
    int i, n;
    printf("entrer le nombre de voitures:  ");
    scanf("%d",&n);
    i=0;
    while(i<n)
    {
     
    pid_t pid_fils;
    do {
    pid_fils = fork ( ) ;
    }
    while ((pid_fils == -1) && (errno == EAGAIN));
    if (pid_fils == -1)
    {
    printf ( "fork( ) impossible, errno=%d\n", errno);
     
    i++;
    }
    if (pid_fils == 0)
    {
    printf ("Fils : PID=%d, PPID=%d\n",getpid( ) , getppid( ));
     
    }
     else {
    printf ("Père : PID=%d, PPID=%d\n",getpid( ) , getppid( ));
    wait (NULL);
     
    }
    }
    }
    l'exécution boucle infini pour qoui???????

  5. #5
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Il faut faire attention à ce qu'on fait. Le return pour le père était inutile mais pas pour le fils...

    Réfléchis à ce que tu souhaites faire...

    Jc

  6. #6
    Membre éclairé
    Inscrit en
    Novembre 2008
    Messages
    357
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 357
    Par défaut
    Citation Envoyé par fearyourself Voir le message
    Il faut faire attention à ce qu'on fait. Le return pour le père était inutile mais pas pour le fils...

    Réfléchis à ce que tu souhaites faire...

    Jc
    pfffffffffff g pas trouvé la solution

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

Discussions similaires

  1. Programme de boot qui passe la main à Windows
    Par Bob dans le forum Assembleur
    Réponses: 7
    Dernier message: 25/11/2002, 03h08
  2. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50
  3. communication entre programmes
    Par jérôme dans le forum C
    Réponses: 12
    Dernier message: 16/04/2002, 08h05
  4. Comment débuter en programmation ?
    Par Marc Lussac dans le forum Débuter
    Réponses: 0
    Dernier message: 08/04/2002, 11h29
  5. [Kylix] icone associée à un programme
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h43

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