信号に関する完全な情報はどこにありますか?

信号に関する完全な情報はどこにありますか?

私は信号に関する完全な情報を知りたいです。たとえば、信号を処理できるかどうかをSIGTTIN知りたいです。SIGTTIN

これ文書シグナルについて以下を説明してくださいSIGTTIN

SIGTTIN 21,21,26 バックグラウンドプロセスを停止する端末入力

そして、man SIGTTIN端末に入力すると何も返されません。


編集する:

プロセスにどの信号を送信できるかではなく、信号を受信するプロセスが信号のデフォルトの動作を変更できるかどうかを意味します。例:SIGTTIN信号のデフォルトの動作はプロセスを停止することです。sigaction()この機能を使用して、プログラムでこの既定の動作を変更できます。これで、一部の信号はデフォルトの動作を変更できません。それが私が探しているものです(どのシグナルがデフォルトの動作を変更することを許可しないかについてのドキュメント)。

答え1

通常、正しいこのコマンドを使用できます。

kill -l | egrep SIGTTIN

SIGTTINをキャプチャしてバックグラウンドで実行し、SIGTTINハンドラを実行すると、簡単な診断メッセージを印刷する高速PERLスクリプトを作成することもできます。

答え2

信号を完全に無視したり、信号ハンドラを設置したりする以外に、信号のデフォルト動作を変更することはできないと思います。sigaction(2)説明する:

sa_handlersignumに関連付けられた動作を指定し、デフォルトの動作にすることができ、SIG_DFLこのSIG_IGN信号を無視するか、信号処理機能へのポインタにすることができます。この関数は信号番号を唯一のパラメータとして受け取ります。

信号の動作を他の基本動作の1つに変更するには、別の信号を生成して目的のタスク(コアダンプのインポートまたはプロセスの停止)を実行するか、単に終了(プロセス終了)することができます。

SIGKILLSIGSTOPキャプチャまたはブロックできない2つの信号です。sigaction(2):

兆候SIGKILLsum以外の有効な信号である可能性がある信号を指定します SIGSTOP

そしてsignal(7):

これらの信号はキャプチャ、ブロック、または無視SIGKILLできません。SIGSTOP

ただし、実際のエラー(誤ったメモリアクセス、誤ったコマンド)からの信号を無視すると、プロセスは非常に安定したままにならない可能性があります。

関連情報