Bonjour,
Je voudrais exécuter une application externe à mon programme Java, mais je voudrais que celui-ci continue à s'exécuter, même si mon programme est arrêté.
Donc, pour exécuter un programme externe, j'utilise la classe Process, et comme conseillé sur le blog de adiGuba (http://blog.developpez.com/adiguba/p...s-plus-simple/), je vide mes flux grâce à cette classe :
Ce qui donne l'appel suivant :
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 public class Drain extends Thread { private final InputStream stream; public Drain(InputStream inputstream) { stream = inputstream; } @Override public void run() { try { while (stream.read() != -1) { } } catch (IOException ioexception) { } } }
Donc, il me semble avoir tout suivi correctement...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Process process = Runtime.getRuntime().exec(new String[]{ (new File(MON_FICHIER_EXE)).getPath() }); new Drain(process.getErrorStream()).start(); new Drain(process.getInputStream()).start();
Cependant, si je ne m'abuse, si je termine mon application Java (qui se termine "malheureusement" par un System.exit(0)), le processus lancé continue à être exécuté, mais les flux ne sont plus vidés...
Ai-je un moyen de faire cela vraiment proprement, car actuellement, j'ai un peu l'impression de le faire qu'à moitié...
Merci d'avance pour vos réponses![]()
Partager