Bonjour à tous,
Je cherche le moyen d'exécuter un commande linux depuis mon application java et ensuite de récupérer le résultat de cette commande.
Exemple :
exécuter --> ifconfig
et récupérer ce qui en ressort
Merci d'avance.
Bonjour à tous,
Je cherche le moyen d'exécuter un commande linux depuis mon application java et ensuite de récupérer le résultat de cette commande.
Exemple :
exécuter --> ifconfig
et récupérer ce qui en ressort
Merci d'avance.
à mon avis, il faut se pencher sur la classe Runtime .
ça donne un code qui ressemble à ça:
il ne reste plus qu'à lire sortie pour avoir les informations obtenues par la commande.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Runtime rt=Runtime.getRuntime(); Process commande= rt.exec("ifconfig"); OutputStream sortie= commande.getOutputStream();
Salut,
C'est getInputStream() pour le flux de sortie du programme (oui oui, même si ca semble bizarre)Envoyé par afrikha
Sinon il ne faut pas oublier de lire le flux de sortie d'erreur getErrorStream() dans un thread séparé afin d'éviter les interblocages, et de fermer le flux d'entrée getOutputStream() s'il n'est pas utilisé...
Toutefois avec Java 5.0 la meilleure solution est d'utiliser la classe ProcessBuilder qui simplifie un peu l'exécution des process (en permettant de rediriger le flux d'erreur vers le flux stdout afin de simplifier la lecture) :
a++
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 try { ProcessBuilder pb = new ProcessBuilder("cmd", "/C", "ipconfig"); pb.redirectErrorStream(true); Process process = pb.start(); InputStream processOutput = process.getInputStream(); try { process.getOutputStream().close(); // fermeture du flux stdin inutilisé // lecture du flux par bloc de 512 bytes : byte[] b = new byte[512]; int len; while ( ( len = processOutput.read(b) ) > 0 ) { System.out.write(b, 0, len); } } finally { processOutput.close(); } } catch (IOException e) { e.printStackTrace(); }
Ok, merci adiGuba
je suis d'accord avec toi, c'est un peu contre nature d'utiliser un InputStream
Et les paramètre de ProcessBuilder tu les trouve comment pour linux ??
en regardant la javadoc correspondant à la version de jdk installé. C'est la même pour tous les OS.Envoyé par clementv
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager