Shell linux dans un programme Java [résolu] - Java - Programmation
Marsh Posté le 24-01-2007 à 22:33:50
As-tu remarqué que Runtime.exec te renvoie un objet de type Process ?
http://java.sun.com/j2se/1.4.2/doc [...] ocess.html
Avec ca, tu peux récuperer les flux d'entrée/sorties, et t'en fait ce que bon te semble.
Marsh Posté le 24-01-2007 à 23:43:33
Ouai j'ai vu ca.
J'avais essayé avec getInputStream() mais sans résultat (ca m'affichait que des adresses mémoires ... je suis un peu noob ).
Là je viens de faire des recherches et je suis tombé pour la première fois sur cette page : http://ydisanto.developpez.com/tut [...] /runtime/.
Donc j'ai essayé et ca marche à peu près. Faut que j'approfondisse. Le problème cest que je ne comprends pas vraiment tout ce qu'il raconte sur la page.
Si quelqu'un a une autre solution qui marche niquel je veux bien.
Merci pour ta réponse.
Marsh Posté le 24-01-2007 à 23:54:10
solution: apprendre a se servir des flux
déjà, toi, il te faut un outputstream (l'input, c'est l'entrée du process, le clavier, quoi), et surtout, pas l'afficher, mais le lire.
Marsh Posté le 25-01-2007 à 00:07:01
C'est clair faut que je me documente sur les flux.
Dans mon cas, il faut bien un inputstream :
Citation : Remarque : au premier abord il peut paraître étrange de récupérer un InputStream pour le flux de sortie standard. Cependant il faut bien se placer au niveau de l'application Java. |
Marsh Posté le 25-01-2007 à 12:16:44
Oui, c'est bien ça: http://java.sun.com/j2se/1.4.2/doc [...] utStream()
Un peu débile, mais bon, soit.
Non, de là, ça doit marcher. Essaye d'exécuter "cmd /c dir", par exemple, ou un simple exe qui sort du texte dans la console. Ca doit marcher.
Ou fait pêter ton code.
Idéalement, je dirais de lire les 2 streams (in et err) dans 2 threads séparées.
Marsh Posté le 25-01-2007 à 19:20:33
J'ai utilisé ProcessBuilder, qui permet d'afficher à la fois le flux de sortie normal et celui d'erreurs proprement.
Marsh Posté le 24-01-2007 à 22:11:06
Bonsoir,
Je suis en train d'écrire un programme Java qui fonctionnera sous Linux, et j'aimerais ajouter un shell linux soit pour excecuter des commandes en local soit via ssh à travers le réseau. Exécuter les commandes n'est pas un problème (avec entre autre Runtime.getRuntime().exec() ...) mais je n'arrive absolument pas à afficher le retour dans ces commandes.
J'aimerais donc en executant ces commandes avoir un retour dans la console (et après pourquoi pas dans le programme mais cest pas le plus important) depuis laquelle j'ai lancé le programme Java. Si quelqu'un a une idée à propos de ca, je suis preneur.
Merci d'avance.
Bonne soirée.
Message édité par Tom_ le 26-01-2007 à 19:28:25