Я использую Windows.
У меня есть Java-приложение, упакованное в исполняемый файл с launch4j. Когда я запускаю его, я вижу два процесса в моем диспетчере задач: упаковщик exe и базовый Java. Когда программа заканчивается, оба процесса исчезают.
Когда я запускаю exe с командной строкой, если я хочу остановить процесс преждевременно, я нажимаю Ctrl-C, и оба процесса завершаются.
Но в некоторых случаях программа запускается другим java-приложением с процессом api. В этом случае, если приложение должно быть остановлено преждевременно, я попытался использовать myProcess.destroy()
, но была остановлена только оболочка exe, базовый Java продолжал работать. Я также пытался destroyForcibly()
с тем же результатом.
Почему разница в поведении? Как я могу действительно эмулировать поведение Ctrl-C и убить оба процесса?