Bonsoir,
J'aimerai écrire un petit bout de code java pour lancer un programme "cible" externe, et récupérer sa sortie verbeuse standard. En gros, lorsque je lance mon programme "cible" normalement, depuis une fenêtre DOS sous Windows ou depuis un shell Linux, des informations s'affichent dans la fenêtre de commande pendant que le programme fonctionne. J'aimerai pouvoir récupérer dynamiquement ces informations. Donc, j'ai écrits le petit bout de code suivant :
Cela fonctionne, mais pas comme je m'y attendais. Lorsque je lance en ligne de commande mon bout de code Java, ce dernier prend bien le prompt, lance mon programme cible, puis rien......
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Process processusCible = Runtime.getRuntime().exec("/machin/chose/programme cible"); BufferedReader lecteur = new BufferedReader(new InputStreamReader(processusCible.getInputStream())); while (!lecteur.ready()) Thread.sleep(5); while (lecteur.ready()) System.out.println(lecteur.readLine());
Je manipule un peu le logiciel cible, ce qui est sensé lui faire sortir quelques infos dans la fenêtre de commande, mais toujours rien. Je quitte le programme cible et là, tout ce que je pensais voir s'afficher dynamiquement s'affiche d'un seul tenant ?!
En clair, j'obtiens bien ce que je cherche, mais seulement quand je quitte le programme cible. Ce qui ne m'arrange pas, mon code est sensé réagir lors de la capture de certaines informations, pas lorsque l'on quitte le programme cible...
Si quelqu'un pouvait m'expliquer pourquoi mon BufferedReader ne reçoit ses informations que lorsque je quitte le programme cible ?
Un grand merci à tous ceux qui se pencheront sur ce problème, et tous mes meilleurs voeux de fin d'année à vous tous.![]()
Partager