プロセスが止まらないとき,キーボードから 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)