Я запускаю несколько внешних процессов через звонок на
Runtime.getRuntime.exec("java myApp");
Я наблюдаю за правильным запуском и выполнением приложения с помощью некоторого java.concurent.Future.
Я могу сказать, если приложение запущено, по ошибке остановлено. Я могу это остановить.
Но когда я убиваю основное приложение (которое запускает остальные), несколько процессов дочерних приложений продолжают работать, и я теряю контроль над ними.
Я искал способ гарантировать, что при остановке / уничтожении / ошибке материнского приложения все дочерние процессы также будут уничтожены.
Что я уже сделал:
Основное приложение выполняется в tomcat, поэтому я слушаю уничтожение контекста и уничтожаю все подпроцессы. Но этого мало: когда кота останавливают или убивают, он не работает.