シグナル処理方法

シグナルはそれぞれ現在の「処理方法 (disposition)」が保持しており、この処 理方法によりシグナルが配送された際にプロセスがどのような振舞いをするかが決まる。

後述の表の "動作" の欄のエントリは各シグナルのデフォルトの処理方法を示しており、以下のような意味を持つ。

Term デフォルトの動作はプロセスの終了。
Ign デフォルトの動作はこのシグナルの無視。
Core デフォルトの動作はプロセスの終了とコアダンプ出力 (core(5) 参照)。
Stop デフォルトの動作はプロセスの一時停止。
Cont デフォルトの動作は、プロセスが停止中の場合にその実行の再開。

標準シグナル

Linux は以下に示す標準シグナルに対応している。シグナル番号の一部はアーキテクチャ依存であり、"値" 欄に示す通りである。 (3つの値が書かれてい るものは、 1つ目が alpha と sparc で通常有効な値、真ん中が i386, ppc, shでの値、最後が mips での値である。 - はそのアーキテクチャにおいて対応するシグナルがないことを示す。)

最初に、POSIX.1-1990 に定義されているシグナルを示す。

シグナル 動作 コメント
SIGHUP 1 Term 制御端末(controlling terminal)のハングアップ検出、または制御しているプロセスの死
SIGINT 2 Term キーボードからの割り込み (Interrupt)
SIGQUIT 3 Core キーボードによる中止 (Quit)
SIGILL 4 Core 不正な命令
SIGABRT 6 Core abort(3) からの中断 (Abort) シグナル
SIGFPE 8 Core 浮動小数点例外
SIGKILL 9 Term Kill シグナル
SIGSEGV 11 Core 不正なメモリ参照
SIGPIPE 13 Term パイプ破壊: 読み手の無いパイプへの書き出し
SIGALRM 14 Term alarm(2) からのタイマーシグナル
SIGTERM 15 Term 終了 (termination) シグナル
SIGUSR1 30,10,16 Term ユーザ定義シグナル 1
SIGUSR2 31,12,17 Term ユーザ定義シグナル 2
SIGCHLD 20,17,18 Ign 子プロセスの一旦停止 (stop) または終了
SIGCONT 19,18,25 Cont 一旦停止 (stop) からの再開
SIGSTOP 17,19,23 Stop プロセスの一旦停止 (stop)
SIGTSTP 18,20,24 Stop 端末 (tty) より入力された一旦停止 (stop)
SIGTTIN 21,21,26 Stop バックグランドプロセスの tty 入力
SIGTTOU 22,22,27 Stop バックグランドプロセスの tty 出力

シグナル SIGKILL と SIGSTOP はキャッチ、ブロック、無視できない。

次に、 POSIX.1-1990 標準にはないが、 SUSv2 と POSIX.1-2001 に記述されているシグナルを示す。

シグナル 動作 コメント
SIGBUS 10,7,10 Core バスエラー (不正なメモリアクセス)
SIGPOLL Term ポーリング可能なイベント (Sys V)。SIGIOと同義
SIGPROF 27,27,29 Term profiling タイマの時間切れ
SIGSYS 12,-,12 Core ルーチンへの引数が不正 (SVr4)
SIGTRAP 5 Core トレース/ブレークポイント トラップ
SIGURG 16,23,21 Ign ソケットの緊急事態 (urgent|condi-tion) (4.2BSD)
SIGVTALRM 26,26,28 Term 仮想アラームクロック (4.2BSD)
SIGXCPU 24,24,30 Core CPU時間制限超過 (4.2BSD)
SIGXFSZ 25,25,31 Core ファイルサイズ制限の超過 (4.2BSD)


参考資料

man 7 signal(CentOS 5.5)
最終更新:2012年10月16日 19:20