Bir öldürülen komutun çıkış durumu, sinyal numarası artı 128 olmalıdır. Böylece, hangi durumu öldürdüğünüzü bulmak için çıkış durumunu kullanabilirsiniz.
Kabuktaki Linux'ta böyle test ettim:
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
DÜZENLEME: Bir programın herhangi bir değerle çıkmaya karar verebileceğini unutmayın (bu nedenle bir sinyalin etkisi olarak çıkış durumuna ne kadar güvendiğinize karar vermeniz gerekir):
for i in $(seq 256); do
sh -c "exit $i"
echo Program exited with $?
done
Dipnot 1: Sistemlerimde çıkış kodları işaretsiz 8 bitlik sayılarla temsil edilir, böylece 256 = 0 değerinde kaydırılırlar.
status
alt süreçtenwait(2)
veya başka bir şeyle erişebilmelidir .