是否有一些訊號無法覆蓋其預設訊號處理程序?

是否有一些訊號無法覆蓋其預設訊號處理程序?

我認為 Linux 訊號是這樣運作的:

每個進程都有一個針對每個訊號的預設訊號處理程序,某些訊號的預設訊號處理程序會終止進程,而其他訊號的預設訊號處理程序只是忽略該訊號,等等。

下表顯示了預設訊號處理程序可以採取的所有操作(該表來自此文件):

學期 預設操作是終止進程。

伊格恩 預設操作是忽略該訊號。

預設操作是終止進程並轉儲核心(請參閱 core(5))。

停止 預設操作是停止該進程。

預設操作是繼續該進程(如果該進程目前已停止)。

您可以使用自己的訊號處理程序覆蓋預設訊號處理程序訊號()(我認為已棄用)或sigaction()

到目前為止我的說法正確嗎?

現在我的問題是:是否有一些訊號您無法覆蓋其預設訊號處理程序?

答案1

您連結的兩個手冊頁都提到了其處理程序不能被覆蓋的訊號。在signal(2)

這些信號SIGKILL不能SIGSTOP被捕獲或忽略。

sigaction(2)

簽名指定訊號,可以是除 SIGKILL和之外的任何有效訊號SIGSTOP

相關內容