Я получил приложение, написанное в java, которое работает в Unix и запускает два подпроцесса (через Runtime.getRuntime().exec()
) при запуске. Если приложение по какой-то причине врезалось, подпроцессы не будут убиты.Java: Убить все подпроцессы на unix
Теперь я добавил крюк выключения, который срабатывает при каждом сбое, хорошо до сих пор. Но я хотел бы отправить сигнал SIGTERM (или, по крайней мере, SIGINT) на консоли UNIX для каждого подпроцесса приложения. Я должен был бы найти их идентификаторы процессов через ps
, но я не смог правильно его извлечь и отправить сигнал для каждого процесса.
Может ли кто-нибудь помочь?
Большое спасибо!
Я не уверен, но выполняю то, что вы хотите в сценарии оболочки. Я найду процесс, поставив PID, а затем уничтожьте его в самом скрипте оболочки. Вызовите этот скрипт в java. – Ved
Если ваше приложение имеет определенное имя, то pkill может работать с этим именем. – tartar
еще один заглушка может быть здесь [1] http://blog.igorminar.com/2007/03/one-more-way-how-to-get-current-pid-in.html – tartar