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

C Discussion :

lire un pipe en C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2009
    Messages : 46
    Par défaut lire un pipe en C
    Bonjour tout le monde de la part d'un éternel débutant.

    Je fais face à un problème dont je ne perçois pas un embryon de solution.

    J'ai deux programmes en C (p1 et p2) dont l'output de p1 et l'input de p2.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    p1 >fichier_intermediaire
    p2 <fichier_intermediaire >output_global
    Ceci fonctionne lorsque fichier_intermediaire est écrit.

    Mais si ce fichier est un fifo, ça ne marche plus...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    mkfifo myfifo
    p1 >myfifo &
    p2 <myfifo >output_global
    p2 me renvoie un message d'erreur de lecture de l'input qu'il attend
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Error reading tree number 1: .
    (p2 est un programme lisant des arbres phylogénétiques en biologie pour simuler des séquences d'ADN).

    Je me demandais si quelqu'un avait une hypothèse sur pourquoi cela marche avec un fichier écrit, mais pas avec un pipe ?

    A bientot!
    Myca

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 469
    Par défaut
    Bonjour,

    Sans voir le programme, il est difficile de te donner une réponse fiable.
    Que donne un :

    Code Shell : Sélectionner tout - Visualiser dans une fenêtre à part
    $ p1 | p2 > output_global

    … ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2009
    Messages : 46
    Par défaut
    Salut,
    j'ai en effet pas cherché à embêter les gens avec le code (un peu long) du programme 2. (j'avais fais un autre programme une fois, pour faire autre chose à partir du programme 1, et il marchait très bien dans un tube avec p1, donc je pense que ça ne peut que venir du p2 cette fois ci).

    Si je fais ce que tu me dis, ça me renvoie la même erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Error reading tree number 1: .

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    On ne peut pas vraiment répondre sans savoir ce que fait exactement P2, mais sache que certaines opérations qui sont possibles sur des fichiers standards ne le sont pas sur les fifo ou sur les pipe (ou des sockets, etc.). On ne peut pas faire de fseek() (ou fonctions apparentées) par exemple sur un fifo, puisque les données d'un fifo sont par définition consommées au fur et à mesure et dans l'ordre. Sur un fifo fseek() échoue avec errno=EBADF.

Discussions similaires

  1. Lire dans un pipe rapidement
    Par lea.soineca dans le forum C
    Réponses: 5
    Dernier message: 13/05/2014, 11h49
  2. Le grand mode d'emploi du forum, à lire si vous souhaitez tout savoir !
    Par Anomaly dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 2
    Dernier message: 03/06/2013, 17h36
  3. Réponses: 5
    Dernier message: 20/08/2002, 18h01
  4. Lire 1 bit d'un fichier en C
    Par Anonymous dans le forum C
    Réponses: 3
    Dernier message: 23/05/2002, 18h31
  5. lire une image au format RAW
    Par Anonymous dans le forum OpenGL
    Réponses: 5
    Dernier message: 20/05/2002, 00h11

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