récupérer le retour d'une fonction unix

récupérer le retour d'une fonction unix - Java - Programmation

Marsh Posté le 04-04-2008 à 11:20:37    

bonjour, je souhaite récupérer le retour d'une fonction unix, voila le code que j'ai écris

Code :
  1. import java.io.*;
  2. public class Essai{
  3.         public static void main(String[] args) throws Exception {
  4.                 String commande = "wc -l cheminFichier1 | awk '{print $1}'";
  5.                 Process processus = Runtime.getRuntime().exec(commande);
  6.                 BufferedReader d = new BufferedReader(new InputStreamReader(processus.getInputStream()));
  7.                 System.out.println(d.readLine());
  8.         }
  9. }


seulement bien que normalement ma commande me renvoi le nombre de ligne du fichier c'est à dire 10,
java lui renvoie " 10 cheminFichier1 ", alors effectivement je pourai extraire le 10 qui m'interesse, mais dans ce cas la le pipe de ma commande ne sert plus à rien.
 
merci de votre aide

Message cité 1 fois
Message édité par dams78 le 04-04-2008 à 11:21:07

---------------
dam's (debianer), ma galerie Flickr
Reply

Marsh Posté le 04-04-2008 à 11:20:37   

Reply

Marsh Posté le 04-04-2008 à 15:33:32    

dams78 a écrit :

bonjour, je souhaite récupérer le retour d'une fonction unix, voila le code que j'ai écris

Code :
  1. import java.io.*;
  2.  
  3. public class Essai{
  4.        public static void main(String[] args) throws Exception {
  5.                String commande = "wc -l cheminFichier1 | awk '{print $1}'";
  6.                Process processus = Runtime.getRuntime().exec(commande);
  7.                BufferedReader d = new BufferedReader(new InputStreamReader(processus.getInputStream()));
  8.                System.out.println(d.readLine());
  9.        }
  10. }


seulement bien que normalement ma commande me renvoi le nombre de ligne du fichier c'est à dire 10,
java lui renvoie " 10 cheminFichier1 ", alors effectivement je pourai extraire le 10 qui m'interesse, mais dans ce cas la le pipe de ma commande ne sert plus à rien.
 
merci de votre aide


facile :  
http://java.sun.com/j2se/1.4.2/doc [...] ng.String)
puis : http://java.sun.com/j2se/1.4.2/doc [...] xitValue()


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 04-04-2008 à 16:02:07    


 
Errrr faux !
 
Il ne cherche pas a avoir le code retour (exit value) de l'appel mais bien ce qui passe par la sortie standard.
 
Après une recherche rapide sur google il semble que Runtime.exec(String) ne soit pas bien adapté pour lancer des lignes de commandes avec des pipes (Cf. 1er lien de la recherche google)
 
=> utiliser exec(String[]) à la place
 

Code :
  1. String[] commande = {
  2.   "/bin/sh",
  3.   "-c", // pour dire au sh de prendre tout le reste de la ligne comme argument
  4.   "wc -l cheminFichier1 | awk '{print $1}'"
  5. };
  6. Process processus = Runtime.getRuntime().exec(commande);


Message édité par Bidem le 04-04-2008 à 16:03:49
Reply

Marsh Posté le 04-04-2008 à 16:38:30    

oh pardon, j'ai répondu un brin trop vite alors


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed