シグナル処理方法
シグナルはそれぞれ現在の「処理方法 (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