SIGINTシグナル
SIGINTシグナルとは?

UNIX系OSにおける「シグナル」(signal)とは、オペレーティングシステム(OS)がプロセスに対して特定の出来事を非同期に通知する仕組みである。ハードウェア障害、不正なメモリアクセス、外部からの終了要求など様々な場面で使われる。SIGINTシグナルはその中でも利用者操作によって発生するシグナルで、対話的なコマンド実行環境での使用が主体となる。
利用者がCtrlキーとCキーを同時を押すと、コマンド操作を司るシェルから中核部のカーネルへ入力が伝わり、OSが最前面で動作しているプロセスにSIGINTシグナルを送信する。受け取ったプロセスは通常そのまま終了するが、プログラム側でシグナル処理を設定している場合は即座に終了せず、開いているファイルを閉じたり一時ファイルを削除したりといった終了前処理を実行することもできる。
長時間にわたる検索処理や通信処理が止まらない場合、あるいは誤って起動したコマンドを停止したい場合に、Ctrl+Cによって即座に終了させることができる。また、killコマンドで「kill -2 プロセスID」と指定することでもSIGINTを送ることができ、最前面のプロセスだけでなく実行中の任意のプロセスを指定できる。
SIGINTシグナルと類似した用途のシグナルに「SIGTERMシグナル」と「SIGKILLシグナル」がある。SIGTERMは終了要求を通知する汎用的なシグナルで、プロセス側が終了前処理を行える点はSIGINTシグナルと共通する。SIGKILLはOSが強制的にプロセスを停止させるもので、プロセス側での無視や捕捉は一切できない。SIGINTシグナルは利用者の対話操作との結びつきが強く、この点でSIGTERMとも性格が異なる。
この仕組みはマルチタスク環境において、制御不能になったプログラムがシステム全体の動作を阻害することを防ぐために整備された。コマンドライン操作が主流であるUNIX系OSの標準的なプログラム中断手段として普及しており、シェルやサーバ管理ツールをはじめ多くのシステムソフトウェアがSIGINTシグナルを前提に設計されている。