У меня есть скрипт bash (вызываемый из Java-программы), который постоянно убивают. Я всегда ловлю signal 15
с, trap
но потом приходит какой-то другой сигнал, который я подозреваю, signal 9
но я в основном слеп, чтобы понять, действительно ли это signal 9
.
Я знаю, что вы не можете trap
signal 9
, так есть ли другой способ узнать, signal 9
убивает ли мой сценарий оболочки?
status
дочернему процессу черезwait(2)
что-либо.-a entry,always -F arch=b64 -S kill -k kill_signals
Ответы:
Статусом выхода команды сброса должно быть число сигнала плюс 128. Таким образом, вы можете использовать статус выхода, чтобы узнать, какой сигнал убил вас обрабатывать.
Я проверил это на Linux в оболочке:
РЕДАКТИРОВАТЬ: Обратите внимание, что программа может решить выйти с любым значением (поэтому вы должны решить, насколько вы доверяете статусу выхода, чтобы быть эффектом сигнала):
Сноска 1: В моих системах коды выхода представлены в виде 8-разрядных чисел без знака, поэтому они имеют значение 256 = 0.
источник