Статусом выхода команды сброса должно быть число сигнала плюс 128. Таким образом, вы можете использовать статус выхода, чтобы узнать, какой сигнал убил вас обрабатывать.
Я проверил это на Linux в оболочке:
print_exit_status_for_signal () {
(
sleep 1000
echo Exit staus $? = signal $(( $? - 128 ))
) &
sleep 1
killall "${1:+-$1}" sleep
}
print_exit_status_for_signal
print_exit_status_for_signal 15
print_exit_status_for_signal 9
print_exit_status_for_signal KILL
print_exit_status_for_signal TERM
РЕДАКТИРОВАТЬ: Обратите внимание, что программа может решить выйти с любым значением (поэтому вы должны решить, насколько вы доверяете статусу выхода, чтобы быть эффектом сигнала):
for i in $(seq 256); do
sh -c "exit $i"
echo Program exited with $?
done
Сноска 1: В моих системах коды выхода представлены в виде 8-разрядных чисел без знака, поэтому они имеют значение 256 = 0.
status
дочернему процессу черезwait(2)
что-либо.