Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2867 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [résolu]Shell linux dans un programme Java

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[résolu]Shell linux dans un programme Java

n°1506967
Tom_
Posté le 24-01-2007 à 22:11:06  profilanswer
 

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
mood
Publicité
Posté le 24-01-2007 à 22:11:06  profilanswer
 

n°1506970
lorill
Posté le 24-01-2007 à 22:33:50  profilanswer
 

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.

n°1506980
Tom_
Posté le 24-01-2007 à 23:43:33  profilanswer
 

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 :D).  
 
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. :whistle:  
 
Si quelqu'un a une autre solution qui marche niquel je veux bien.
 
Merci pour ta réponse.


Message édité par Tom_ le 24-01-2007 à 23:44:35
n°1506981
lorill
Posté le 24-01-2007 à 23:54:10  profilanswer
 

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.

n°1506982
Tom_
Posté le 25-01-2007 à 00:07:01  profilanswer
 

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.  
 En effet, il s'agit de la sortie standard de l'application externe, l'application Java va lire ce flux qui est donc de son point de vue (en fait le notre) un flux d'entrée (idem pour le flux d'erreur). De même pour l'entrée standard de l'application externe, du point de vue de l'application Java il s'agit d'un flux de sortie puisqu'elle y écrit (d'où le OutputStream).


Message édité par Tom_ le 25-01-2007 à 00:07:38
n°1507086
sircam
I Like Trains
Posté le 25-01-2007 à 12:16:44  profilanswer
 

Oui, c'est bien ça: http://java.sun.com/j2se/1.4.2/doc [...] utStream()
 
Un peu débile, mais bon, soit. :spamafote:
 
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.

n°1507242
Tom_
Posté le 25-01-2007 à 19:20:33  profilanswer
 

J'ai utilisé ProcessBuilder, qui permet d'afficher à la fois le flux de sortie normal et celui d'erreurs proprement.

n°1507250
sircam
I Like Trains
Posté le 25-01-2007 à 20:10:17  profilanswer
 

Bon, et quoi? Marche, marche pas?

n°1507607
Tom_
Posté le 26-01-2007 à 19:27:57  profilanswer
 

Ca marche niquel. Merci pour vos réponses. ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [résolu]Shell linux dans un programme Java

 

Sujets relatifs
Problème Java: gestion d'accès à des documentsmultiplexer avec java sound
[Résolu en 1h30 !][SQL] requête , sous-requêtes[SQL Server][RESOLU] Mise à jour de base de donnée
[Résolu] [MySQL] Problème nombre commençant par zéroPause du programme en attendant un évènement
passer de java à cpp[Résolu] Ifstream et commentaires
[RESOLU]Checkbox[xsl] sélection de noeuds selon leurs attrituts [Résolu]
Plus de sujets relatifs à : [résolu]Shell linux dans un programme Java


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR