1. #1
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    avril 2015
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : avril 2015
    Messages : 193
    Points : 54
    Points
    54

    Par défaut transfert de chaine de caractère à l'aide de pipe

    Bonjour,

    Je souhaiterais faire un petit programme où le père envoie une chaine au fils, le fils la met en majuscule, la renvoie au père, et le père l'affiche.
    Voici ce que j'ai fais :

    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
     
    #include <ctype.h>
    #include <stdio.h>
    #include <sys/types.h>
    #include <sys/wait.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <errno.h>
     
    int pfd01[2], pfd10[2];
     
    void erreur(char *message)
    {
        fprintf(stderr,"Erreur: %s\terrno=%d\n", message,errno);
        exit(1);
    }
     
    void Pere()
    {
      int i;
      char buffer[BUFSIZ]="bonjour";
      char chaine[BUFSIZ];
      if(close(pfd01[0])==-1) erreur("close");
      if(close(pfd10[1])==-1) erreur("close");
      if(write(pfd01[1], buffer, 7)==-1) erreur("write");
      if(read(pfd10[0], chaine, 7)==-1) erreur("write");
      for(i=0;i<7;i++)
      {
        printf("%c",chaine[i]);
      }
    }
     
    void Fils()
    {
      char buffer[BUFSIZ];
      int i;
      if(close(pfd01[1])==-1) erreur("close");
      if(close(pfd10[0])==-1) erreur("close");
      if(read(pfd01[0], buffer, 7)==-1) erreur("write");
      for(i=0;i<7;i++)
      {
        buffer[i]=toupper(buffer[i]);
      }
      if(write(pfd10[1], buffer, 7)==-1) erreur("write");
      exit(0);
    }
     
    int main()
    {
      if(pipe(pfd01)==-1) erreur("pipe");
      if(pipe(pfd10)==-1) erreur("pipe");
      switch(fork())
      {
        case -1 : erreur("fork");
        case 0 : fils();
      }
      pere();
    }
    Seulement j'ai une erreur à la compilation.

    Pourriez-vous me dire d'où vient-elle ?

    Merci d'avance !

  2. #2
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    avril 2015
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : avril 2015
    Messages : 193
    Points : 54
    Points
    54

    Par défaut

    Edit :
    Problème de majuscules avec pere et fils ... Désolé.

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

Discussions similaires

  1. aide pour la comparaison des 2 chaines de caractéres
    Par nanouna41 dans le forum Prolog
    Réponses: 1
    Dernier message: 31/03/2016, 09h33
  2. Aide sur reconstitution de chaines de caractères
    Par lbar012001 dans le forum PL/SQL
    Réponses: 3
    Dernier message: 09/05/2014, 15h57
  3. Aide réception et séparation chaine de caractère
    Par juju1988 dans le forum Langage
    Réponses: 14
    Dernier message: 27/12/2011, 15h13
  4. Réponses: 9
    Dernier message: 07/09/2006, 14h47
  5. Réponses: 2
    Dernier message: 06/12/2002, 08h50

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