[Runtime] Rediriger la sortie d'un processus
Bonjour
En parcourant avec la fonction Rechercher, je me suis appuyé sur l'un des codes proposé. Mon objectif est de pouvoir afficher sur la sortie standard le résultat d'une commande Unix lancé à partir d'un code Java.
Voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10
|
try {
Process process = Runtime.getRuntime().exec("ls /boot/config*");
BufferedReader ds = new BufferedReader(new InputStreamReader(process.getInputStream()));
String lineCourante = ds.readLine();
while (lineCourante != null) {
System.out.println(lineCourante);
lineCourante = ds.readLine();
}
} |
La commande en mode shell fonctionne. Par contre, à l'exécution, rien ne s'affiche !
Donc, où est mon erreur ?
Merci d'avance de vos réponses.
@++
[Runtime] Rediriger la sortie d'un processus
Ton code semble correct
J'ai moi-même eu des ennuis avec ce type de programme où je ne n'ai pas pu récupérer le résultat de certaines commandes unix mais avecls ça marche à coup sûr.
J'ai trouvé ce lien
http://www.mountainstorm.com/publications/javazine.html
qui fait la même chose
son code est
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| import java.io.*;
class execInput {
public static void main(String Argv[]) {
try {
String ls_str;
Process ls_proc = Runtime.getRuntime().exec("/bin/ls -aFl");
// get its output (your input) stream
DataInputStream ls_in = new DataInputStream(
ls_proc.getInputStream()) ;
try {
while ((ls_str = ls_in.readLine()) != null) {
System.out.println(ls_str);
}
} catch (IOException e) {
System.exit(0);
}
} catch (IOException e1) {
System.err.println(e1);
System.exit(1);
}
System.exit(0);
}
} |
A première vue la seule différence est l'utilisation de DataInputStream à la place de BufferedInputStream mais je ne pense pas que ce soit l'erreur surtout que tu transformes bien ton flux d'octets en flux de caractères avec InputStreamReader
En espérant t'avoir aidé
Sinon essaye avec un ls tout seul
:!: