シグナルは,プロセス間で連絡を取り合うための仕組みです。実行中のプロセスの処理をいったん止めて,別のプロセスを処理したい場合などに用いられます。シグナルは,Linuxカーネルに実装されています。
シグナルは,キーボードからの割り込み「SIGINT」や浮動小数点例外「SIGFPE」,プロセスの終了「SIGTERM」など,30種類以上が用意されています。ちなみにこれらのシグナルは,プログラム(プロセス)自身の動作によって発生する「同期シグナル」,外的な要因で発生する「非同期シグナル」の2種類に分けられています。
シグナルの具体的な動作は,次のようになります。あるプロセスの実行中に処理を割り込ませたい場合,カーネルがシグナルを発生させます。シグナルが発生すると実行中のプロセスが中断され,特定の処理が実行されます(図1)。
この特定の処理を「シグナル・ハンドラ」と呼びます。シグナルは突然発生するものですから,発生するシグナルごとに実行したい処理を,あらかじめシグナル・ハンドラとして登録しておきます。