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 :

LES TUBES (Pipe)


Sujet :

Linux

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 73
    Points : 44
    Points
    44
    Par défaut LES TUBES (Pipe)
    Bonjour,
    Je voudrais que vous m'aidiez à écrire un programme permettant de transférer le contenu d’un tableau d’entiers d’un père vers un fils en
    utilisant un tube. Le fils affichera le contenu du tableau reçu.

    voila mon code:
    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
    int main()
     {
        int fils;
        int p[2];
        int i;
        int T[5] = {0, 1, 2, 3, 4};
        int buf[5];
        pipe (&p[0]);
      if((fils = fork())==0)
        {
          close(p[1]);
          read(p[0], buf, 5*sizeof(int));
         for(i=0; i<5; i++)
          {
             printf("%i", buf[i]);
           }
           close(p[0]);
           exit(0);
         }
      else
        {
          close(p[0]);
           write(p[1],T, 5*sizeof(int));
           wait(NULL);
            close(p[1]);
            exit(0);
         }

    Je vous remercie par avance.

    Cordialement

  2. #2
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    C'est quoi le problème dans ce code ?
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  3. #3
    Membre éprouvé
    Avatar de Celelibi
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 087
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 087
    Points : 1 122
    Points
    1 122
    Par défaut
    À vu de nez c'est un exo de prog système de base. N'est-ce pas ?

    Ce code à l'air pas mal, mais il faut vérifier le retour de TOUS les appels système, et en cas d'erreur, afficher le message soit avec perror, soit avec strerror (de préférence préfixé par le nom de l'appel système fautif).
    Deuxième truc, tu lit tout le tableau en un seul bloc, ça veut dire que la fonction read ne sortira pas tant que tout n'est pas lu, ça empêche de faire du traitement au fur et à mesure que les éléments arrivent sur le pipe (une des utilité du pipe).


    Sinon, il faudrait peut-être préciser toi-même ce qui ne va pas dans ce code, sinon, on pourrait le commenter longtemps sans répondre à tes attentes.
    Les vaches ne peuvent PAS voler, quoi qu'elles aient pu vous raconter.

Discussions similaires

  1. Les tubes (pipes)
    Par winux32 dans le forum Windows
    Réponses: 3
    Dernier message: 21/04/2008, 08h22
  2. les tubes en c++
    Par kobton dans le forum C++
    Réponses: 5
    Dernier message: 24/03/2008, 12h05
  3. Exercice en c sur les forks+Pipe+exec
    Par Elendhil dans le forum Linux
    Réponses: 6
    Dernier message: 07/11/2007, 19h32
  4. Réponses: 5
    Dernier message: 05/01/2007, 21h26
  5. Probleme avec les tubes
    Par L4BiN dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 28/07/2006, 10h44

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