Linux

是否可以確定上次執行的應用程序接收到的信號?

  • November 28, 2018

從 shell 中,比如說 Bash,是否有可能以類似於通過列印檢查程序的返回碼的方式檢索最近完成的應用程序接收到的信號號(如果有的話)$?

當一個程序被殺死時,殺死它的信號被編碼在由父程序(或子子收割者或init孤兒)檢索的退出狀態中。

bash程式碼是$?128+ 。

這就是大多數 Bourne-like shell 所做的,ksh93 使用 256+signum,yash 384+signum。

$?處於任一狀態意味著程序被信號 1 (SIGHUP) 殺死,或者它執行129了. 但是,如果它確實這樣做了,那很可能是通過 SIGHUP 報告某個程序的死亡。bash``exit(129)``exit(129)

要從 的值中獲取信號名稱$?,請執行:

kill -l "$?"

無論它們使用 128/256/384 + signum,這都適用於所有類似 Bourne 的 shell。

程序終止時,請參閱預設退出程式碼中的詳細資訊?

引用自:https://unix.stackexchange.com/questions/484624