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 :

Redirection stdin / stdout


Sujet :

Linux

  1. #1
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Points : 1 956
    Points
    1 956
    Par défaut Redirection stdin / stdout
    Bonjour à tous,

    O.S : Fedora Core 6 ; Noyau : 2.6.19 ; Shell : bash

    Je cherche à rediriger la sortie et l'entrée de différents programmes. J'explique mon cas :

    J'ai à ma disposition deux programmes (appelons les A et B) de type console. Je dispose du code source de A puisque c'est moi qui l'ait programmé (en C) mais pas celui de B.

    En temps normal, programme A envoi des données à B qui les traite. B affiche ensuite le résultat du traitement sur le terminal.

    J'aimerais : rediriger la sortie A vers l'entrée de B, et la sortie de B vers l'entrée de A (dans le même temps).

    De cette façon le programme A peut se servir du traitement B. J'aimerais ne pas passer par des fichiers mais plutôt par la redirection des stdin et stdout des programmes.

    Pour l'instant je ne sais que rediriger le stdout de A vers le stdin de B :

    Mais après je ne sais pas comment rediriger la sortie de B (stdout) vers l'entrée (stdin) de A (sans démarrez une autre instance de A, il faut que ce soit celui qui est déjà démarré...).

    J'espère que je suis assez clair mais dans le cas contraire n'hésitez pas à me demander des précisions.

    Dans le cas hypothétique où cela ne serait pas possible via la ligne de commande, est-ce possible "programmatiquement" ?

    Je vous remercie

  2. #2
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    344
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 344
    Points : 324
    Points
    324
    Par défaut
    La seule façon que je vois ce serait de créer des fichiers fifo (commande mkfifo). Du genre:
    On crée les fichiers fifo pour A et B:
    # mkfifo /tmp/fifoA
    # mkfifo /tmp/fifoB
    il faudrait que dans tes programmes, tu remplaces le STDOUT par /tmp/fifoA ou /tmp/fifoB selon que ce soit le programme B ou A, puis que tu les lances de la manière suivante:
    # A < /tmp/fifoA
    # B < /tmp/fifoB

  3. #3
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Points : 1 956
    Points
    1 956
    Par défaut
    Bonjour,

    merci usf70 pour ta réponse, je vais creuser de ce coté là.

    Pour l'instant j'ai pallié au problème en redirigeant les flux vers des fichiers et en utilisant un troisième programme, mais il est possible que ta solution soit fonctionnelle. Il ne me reste plus qu'a tester cela

    Je te remercie

  4. #4
    Membre éclairé Avatar de reggae
    Profil pro
    Inscrit en
    Août 2005
    Messages
    773
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2005
    Messages : 773
    Points : 795
    Points
    795
    Par défaut
    Tu pourrais tenter de modifier ce code source:
    http://www.unixwiz.net/techtips/remap-pipe-fds.html

Discussions similaires

  1. Code Win32 vers Linux (stdin/stdout)
    Par MonsieurAk dans le forum Linux
    Réponses: 2
    Dernier message: 26/04/2006, 17h27
  2. Redirection de stdout en C
    Par gege2061 dans le forum Linux
    Réponses: 4
    Dernier message: 06/03/2006, 15h49
  3. flux stdin/stdout [2 questions]
    Par MonsieurAk dans le forum C
    Réponses: 3
    Dernier message: 20/12/2005, 16h18
  4. descripteur stdin stdout
    Par discogarden dans le forum Réseau
    Réponses: 10
    Dernier message: 08/01/2003, 23h25

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