在哪裡可以找到有關信號的完整資訊?

在哪裡可以找到有關信號的完整資訊?

我想知道有關信號的完整信息SIGTTIN,例如我想知道SIGTTIN信號是否可以處理。

文件僅說明有關信號的以下內容SIGTTIN

SIGTTIN 21,21,26 停止後台程序的終端輸入

並且man SIGTTIN在終端機中輸入沒有返回任何內容。


編輯:

我的意思不是可以向進程發送什麼訊號,而是接收訊號的進程是否可以更改訊號的預設操作。例如:SIGTTIN訊號的預設操作是停止進程,您可以使用該sigaction()函數在程式中變更此預設操作。現在,有些訊號不允許您更改其預設操作,這就是我正在尋找的內容(有關哪些訊號不允許您更改其預設操作的文件)。

答案1

您可以使用此命令,該命令通常是正確的。

kill -l | egrep SIGTTIN

您也可以編寫一個快速 PERL 腳本來擷取 SIGTTIN + 然後在背景執行它 + 如果您的 SIGTTIN 處理程序執行則輸出一條簡單的診斷訊息。

答案2

我認為除了完全忽略信號或安裝信號處理程序之外,您無法更改信號的預設操作。sigaction(2)說:

sa_handler指定與signum 關聯的操作,並且可能是SIG_DFL預設操作、SIG_IGN忽略此訊號或指向訊號處理函數的指標。此函數接收訊號編號作為其唯一參數。

如果您想將某個訊號的操作更改為其他預設操作之一,您可以引發另一個訊號來執行您想要的操作(獲取核心轉儲或停止進程),或者只是簡單退出(終止進程) )。

SIGKILLSIGSTOP是您無法捕獲或阻止的兩個信號。sigaction(2)

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

signal(7)

這些訊號SIGKILL無法SIGSTOP被捕捉、封鎖或忽略。

然而,忽略來自實際故障(無效的記憶體存取、無效的指令)的訊號可能不會使進程處於非常穩定的狀態。

相關內容