Как правило, назначение нуль-то в Java не делает его остановить или уйти. В лучшем случае это может сделать все, что недоступно ... и, следовательно, иметь право на сбор мусора в какой-то момент в будущем.
Если вы хотите остановить внешний процесс, вам необходимо позвонить destroy()
на объект Process
. Это попытается принудительно прекратить внешний дочерний процесс. Будет ли это успешным, будет зависеть от привилегии приложения. (Будет ли это прекратить все дочерних процессов потомков зависит от платформы ...)
Вы прокомментировали следующим образом:
«Уничтожить завершить программу, но и убить процесс, который запускает созданный. ..»
Ну, если вы не хотите, чтобы убить процесс, и просто хочу знать, что происходит, то объяснение, что„красный свет“означает, что дочерний процесс все еще бежит г. Если вы хотите, чтобы «красный свет» исчез, не убивая дочерний процесс, вам, вероятно, не повезло.
Я предполагаю, что другая возможность заключается в том, что вы действительно хотите, чтобы дочерний процесс «отделился» от приложения Java. Я не знаю, как вы могли бы сделать это в Windows, но в Unix/Linux вы бы запустить его так:
/bin/bash -c "/usr/bin/nohup /usr/bin/firefox &"
&
говорит работать в фоновом режиме, а nohup
отсоединяется стандартный ввод/вывод/ошибка.
Как насчет использования отладчика? – mre
Что произойдет, если вы закроете экземпляр проводника, который он начнет? – DaveH
Разве процесс «исследователя» не разворачивается из процесса Java? Java будет работать до завершения проводника. –