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

API standards et tierces Java Discussion :

[Runtime,exec] Comment faire un pipe unix dans le exec ?


Sujet :

API standards et tierces Java

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 17
    Points : 14
    Points
    14
    Par défaut [Runtime,exec] Comment faire un pipe unix dans le exec ?
    Bonjour,

    Est-ce que quelqu'un saurait comment faire un pipe via la commande exec de la classe Runtime ?
    Quand je fais : ls -l | wc -l, l'inputstream de ce process ne renvoie rien mais le errorstream lui me renvoie que
    | not found
    -l not found
    Je précise le premier c'est le signe du pipe...
    Donc comment faire pour réussir le pipe svp?
    Merci d'avance..

  2. #2
    Membre régulier
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Points : 74
    Points
    74
    Par défaut
    Pourrais tu nous poster ta ligne de code pour que l'on voit où est ton erreur?

    Nicolas.

  3. #3
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Tu dois gérer toit même le pipe...
    Tu obtiens cette erreur car le pipe ( | ) est passé en paramètre à ls comme si tu avais utilisé la commande suivante sous le shell :
    Il faut que tu gère toi même le pipe...
    Il faut lancer les deux Process en parallele et copier le flux de l'un vers l'autre...

    Ceci devrait marcher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Process ls = Runtime.getRuntime().exec("ls -l");
    Process wc = Runtime.getRuntime().exec("wc -l");
     
    InputStream lsOutput = ls.getInputStream();
    OutputStream wcInput = wc.getOutputStream();
     
    // On 'copie' la sortie de ls dans l'entrée de wc :
    int c;
    while ( (c = lsOutput.read()) != -1 ) {
          wcInput.write(c);
    }
     
    lsOutput.close();
    wcInput.close();
    a++

  4. #4
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    Une autre possibilité est de lancer un shell pour interpréter la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Process process = Runtime.getRuntime().exec("/bin/sh", "-c", "ls -l | wc -l");

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par herve91 Voir le message
    Une autre possibilité est de lancer un shell pour interpréter la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Process process = Runtime.getRuntime().exec("/bin/sh", "-c", "ls -l | wc -l");


    super, merci ca fait une demi journée que je cherchais comment faire

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

Discussions similaires

  1. [CSS] Comment faire apparaitre l'ascenceur dans une <div&
    Par vampyrx dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 08/09/2005, 10h06
  2. Réponses: 4
    Dernier message: 25/01/2005, 22h14
  3. [CR]Comment faire de longs commentaires dans le code
    Par liberio dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 07/06/2004, 20h45
  4. Réponses: 5
    Dernier message: 08/03/2004, 10h28

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