2014/04/16

Linux シグナル

プロセスが止まらないとき,キーボードから Control-C を打鍵して止めることがよくある。 何もプログラムに Control-C の入力を処理するコードを書いたわけではないのに止まる。
なぜ止まるのだろう。
==>シグナル

計算機の CPU はさまざまなハードウェアからの割り込み要求 (interrupt request) を非同期的に受け付ける。
シグナルとは,このような CPU へのハードウェア的な割り込み要求に似た仕組みを,オペレーティング・システムがソフトウェア的に実現したものである。
ハードウェアの割り込み要求が CPU へと送られるのと同じように,シグナルはプロセスへと送られる。
つまり,シグナルとは,プロセスに送られるソフトウェア的な割り込み要求である。

1     SIGHUP     制御端末(controlling terminal)のハングアップ検出、または制御しているプロセスの死
2     SIGINT     キーボードからの割り込み (Interrupt)
3     SIGQUIT     キーボードによる中止 (Quit)
4     SIGILL     不正な命令
5     SIGTRAP     トレース/ブレークポイント トラップ, IOT トラップ。SIGABRT と同義
6     SIGABRT     abort(3) からの中断 (Abort) シグナル
7     SIGBUS     バスエラー (不正なメモリアクセス)
8     SIGFPE     浮動小数点例外
9     SIGKILL     Kill シグナル
10     SIGUSR1     ユーザ定義シグナル 1
11     SIGSEGV     不正なメモリ参照
12     SIGUSR2     ユーザ定義シグナル 2
13     SIGPIPE     パイプ破壊:読み手の無いパイプへの書き出し
14     SIGALRM     alarm(2) からのタイマーシグナル
15     SIGTERM     終了 (termination) シグナル
16     SIGSTKFLT     数値演算プロセッサにおけるスタックフォルト (未使用)
17     SIGCHLD     子プロセスの一時停止 (stop) または終了
18     SIGCONT     一時停止 (stop) からの再開
19     SIGSTOP     プロセスの一時停止 (stop)
20     SIGTSTP     端末より入力された一時停止 (stop)
21     SIGTTIN     バックグランドプロセスの端末入力
22     SIGTTOU     バックグランドプロセスの端末出力
23     SIGURG     ソケットの緊急事態 (urgent condition) (4.2BSD)
24     SIGXCPU     CPU時間制限超過 (4.2BSD)
25     SIGXFSZ     ファイルサイズ制限の超過 (4.2BSD)
26     SIGVTALRM     仮想アラームクロック (4.2BSD)
27     SIGPROF     profiling タイマの時間切れ
28     SIGWINCH     ウィンドウ リサイズ シグナル (4.3BSD, Sun)
29     SIGIO     入出力が可能になった (4.2BSD)
30     SIGPWR     電源喪失 (Power failure) (System V)
31     SIGSYS     ルーチンへの引き数が不正 (SVr4)