2017-03-08 2 views
1

J'ai une interface graphique qui a beaucoup de boutons. Chaque bouton crée un Process (ProcessBuilder.start()) qui envoie une commande ClearCase prédéterminée avec des arguments prédéfinis.Tuer un java.lang.Process pas tuer le sous-processus()

Après avoir appelé ProcessBuilder.start(), j'ajoute le processus à une liste. Lorsque le programme s'arrête, je parcourir cette liste et appeler destroy() sur chaque processus. J'utilise Runtime.getRuntime().addShutdownHook() pour essayer de parcourir ma liste.

Cependant, quand je regarde dans le Gestionnaire des tâches de Windows, je vois que certains processus conhost.exe et cleartool.exe sont toujours en vie. Je suspecte que Process.destroy() ne fonctionne pas ou ne se propage pas. Y at-il un moyen de nettoyer complètement le programme et de tuer tous les sous-processus lorsque l'utilisateur clique sur X?

+0

'destroyForcibly()'? –

+0

Utilisez-vous une vue dynamique et un setview cleartool? – VonC

+0

J'ai essayé 'destroyForcibly()' au début mais pas de changement. J'utilise une vue snapshot juste en faisant tourner le processus dans le répertoire 'view'. – RockManX77777

Répondre