Retourner aux forums || Retourner au forum Programmation.java
Programmation.java : Du Java qui lance un cmd qui lance du Java... Comment killer tout ça?
Posté par Sixel (page perso, ) le 06 avril 2005J'ai toute une série de de batches windows, chacun faisant un appel à la même classe Java mais avec des paramètres différents pour le main. Jusque là, je me contentais de les lancer via la ligne de commande, et un ^C suffisait à interrompre les batches et l'exécution des classes Java du même coup.
Afin de rendre le tout un poil plus clair, j'ai créé une classe (qui elle-même sert de base à une GUI) qui me permet de lancer et interrompre ces batches. Le lancement se fait via un bon vieux
Process pr = Runtime.getRuntime().exec(monBatch)des familles, et les interruptions via le non moins célèbre
pr.destroy();
Un petit coup d'oeil au task manager me confirme bien que 2 processus sont créés au lancement (cmd.exe et java.exe), mais qu'au moment de l'interruption manuelle, seul le cmd est tué, la classe Java continuant son exécution comme si de rien n'était.
J'ai pas mal cherché sur le net, c'est une question assez courante, mais les réponses sont assez directe : c'est pas possible de tuer les processus fils en ne tuant que le père.
Ma question est donc : Y aurait-il un moyen détourné d'avoir accès aux processus fils? Je pensais bien zapper les batches, et appeler directement les classes (il devient donc trivial de les killer), mais c'est pas super flexible, notamment au niveau des classpath, qui sont définis dans les batches pour le moment.
Je suis prêt à faire une refonte de code si nécessaire, car pour le moment je suis vraiment dans l'impasse...
Merci d'avance!
"Il faut" (Ezekiel 18:4) "forniquer" (Corinthiens 6:9, 10) "avec des chiens" (Thessaloniciens 1:6-9) "morts" (Timothée 3:1-10).
On est où là ?
"Démarrer -> Arrêter -> Redémarrer l'ordinateur
..
..
..
Welcome to Grub (ou Lilo, hein, j'suis pas raciste)
Windows
Linux <--
..
..
Mon truc bidule chouette en java
Lancer des process
Lancer des process
Lancer des process
Lancer des process
kill le_process_qui_va_bien
" ?
Es-tu prêt à faire une refonte de l'OS aussi ?
Bon, ok, je --> []
Bon, quand même : ce n'est typiquement pas un problème Java ! C'est un pur problème Windows.
Remplace Java.exe par n'importe quoi d'autre, le comportement est identique !
Bonne journée
Christophe
-
[^]Re: On est où là ?
Posté par Sixel (page perso, ) le 06/04/2005 à 12:44. (lien). Évalué à 1.Haha, si ça tenait qu'à moi, ou même à ma boîte, ça poserait pas de problème de passer à Linux. Mais va dire ça à notre client, qui vue sa taille doit faire partie des gros gros comptes de Windows...
M'en vais faire une fitcheure ricouaiste pour Longhorn, tiens! ;)--
"Il faut" (Ezekiel 18:4) "forniquer" (Corinthiens 6:9, 10) "avec des chiens" (Thessaloniciens 1:6-9) "morts" (Timothée 3:1-10).
re
ils font quoi tes scripts?
parce que si c'est juste passer des parametres au main (un
java Maclass paramstout con quoi), tu peux lancer direct la jvm depuis ton code java et ainsi pouvoir la killer simplement.
Cf la classe Runtime et les differentes methodes exec(), qui te permettent de changer le repertoire de travail et de passer des parametres au process executé.
-
[^]Re: re
Posté par Sixel (page perso, ) le 10/04/2005 à 23:31. (lien). Évalué à 1.En fait, c'est ce que j'ai fini par faire.
Merci quand même en tout cas!--
"Il faut" (Ezekiel 18:4) "forniquer" (Corinthiens 6:9, 10) "avec des chiens" (Thessaloniciens 1:6-9) "morts" (Timothée 3:1-10).
Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.java



Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.