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

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

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

これドキュメンテーション信号については次のようにのみ述べていますSIGTTIN

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

man SIGTTINターミナルに入力しても何も返されませんでした。


編集:

私が言いたいのは、プロセスに送信できるシグナルではなく、シグナルを受信したプロセスがシグナルのデフォルト アクションを変更できるかどうかです。たとえば、シグナルのデフォルト アクションはSIGTTINプロセスを停止することですが、関数を使用してプログラム内でこのデフォルト アクションを変更できますsigaction()。一部のシグナルでは、デフォルト アクションを変更できません。これが私が探しているものです (デフォルト アクションを変更できないシグナルに関するドキュメント)。

答え1

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

kill -l | egrep SIGTTIN

また、SIGTTIN をトラップする簡単な PERL スクリプトを作成し、それをバックグラウンドで実行して、SIGTTIN ハンドラが実行された場合に簡単な診断メッセージを出力することもできます。

答え2

シグナルを完全に無視したり、シグナル ハンドラーをインストールしたりするのと同じように、シグナルのデフォルトのアクションを変更することはできないと思います。sigaction(2)言う:

sa_ハンドラsignum に関連付けるアクションを指定します。これは、SIG_DFLデフォルトのアクション、SIG_IGNこのシグナルを無視するアクション、またはシグナル処理関数へのポインターになります。この関数は、シグナル番号を唯一の引数として受け取ります。

あるシグナルのアクションを他のデフォルト アクションのいずれかに変更する場合は、必要な操作 (コア ダンプを取得するかプロセスを停止する) を実行する別のシグナルを発生させるか、単に exit (プロセスを終了する) を発生させることができます。

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

シグナム信号を指定し、 および を除く任意の有効な信号を指定でき SIGKILLますSIGSTOP

そしてsignal(7):

信号はキャッチしたり、ブロックしたり、無視したりすることはできませんSIGKILLSIGSTOP

ただし、実際の障害 (無効なメモリ アクセス、無効な命令) から発生した信号を無視すると、プロセスが安定した状態にならない可能性があります。

関連情報