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 :

Comment créer deux processus fils UNIX avec C


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mauritanie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 17
    Par défaut Comment créer deux processus fils UNIX avec C
    Bonsoir
    j'aimerais connaitre le code qui crée deux processus fils (père qui crée le fils 1 et ce dernier crée le fils 2 ) et qui affiche le message "bonjours fils 1" et "bonjours fils 2"

    J'ai fais le test de deux processus fils (père qui créer le fils 1 et le fils 2) et voici le code :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    #include<stdio.h>
    #include<stdlib.h>
    #include<sys/wait.h>
    #include<assert.h>
    #include<unistd.h>
    #include<string.h>
    int main(int argc, char* argv[])
    {
    int pipefd[2] ,pipefd2[2];
    int cpid,cpid2;
    char buf,buf2;
    assert(argc==3);
    if(pipe(pipefd)==-1)
    {
    perror("pipe");
    exit(EXIT_FAILURE);
    }
    cpid=fork();
    if(cpid==-1){
    perror("fork");
    exit(EXIT_FAILURE);
    }
    if(cpid==0)
    { /* child reads from pipe */
    close(pipefd[1]); /*close unused write end */
    while(read(pipefd[0],&buf,1)>0)
    {
    write(STDOUT_FILENO,&buf,1);
    write(STDOUT_FILENO, "\n", 1);
    }
    close(pipefd[0]);
    exit(EXIT_SUCCESS);
    }
    else
    { /*parent writes argv[1] to pipe */
    close(pipefd[0]);/*close unused read end */
    write(pipefd[1],argv[1],strlen(argv[1]));
    close(pipefd[1]); /* reader will see EOF */
    //wait(NULL);  /*wait for child */
    if(pipe(pipefd2)==-1)
    {
    perror("pipe");
    exit(EXIT_FAILURE);
    }
    cpid2=fork();
    if(cpid2==-1){
    perror("fork");
    exit(EXIT_FAILURE);
    }
    if(cpid2==0)
    { /* child2 reads from pipe */
    close(pipefd2[1]); /*close unused write end */
    while(read(pipefd2[0],&buf2,1)>0)
    {
    write(STDOUT_FILENO,&buf2,1);
    write(STDOUT_FILENO,"\n", 1);
    }
    close(pipefd2[0]);
    exit(EXIT_SUCCESS);
    }
    else
    { /*parent writes argv[1] to pipe */
    close(pipefd2[0]);/*close unused read end */
    write(pipefd2[1],argv[2],strlen(argv[2]));
    close(pipefd2[1]); /* reader will see EOF */
    wait(NULL);  /*wait for child */
    exit(EXIT_SUCCESS);
    }
    }
    }
    Merci de m'aider.

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 283
    Par défaut
    Bonjour

    • C'est une question de C, pas de Linux
    • D'ailleurs il n'y a pas de question.
    • Tu dis faire un test, mais tu ne présentes pas les résultats du test.



  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mauritanie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 17
    Par défaut
    Ok merci je vais le déplacer

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

Discussions similaires

  1. Comment créer deux processus fils UNIX avec C
    Par Astronge dans le forum C
    Réponses: 2
    Dernier message: 20/05/2015, 17h36
  2. Réponses: 2
    Dernier message: 10/02/2009, 20h06
  3. Comment créer un processus fils?
    Par Linkin dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 11/04/2008, 13h27
  4. Comment créer deux jars avec leurs manifest
    Par pracede2005 dans le forum ANT
    Réponses: 1
    Dernier message: 22/09/2007, 20h37
  5. Réponses: 0
    Dernier message: 17/10/2005, 08h05

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