signal〜シグナルを受け取ったときの処理を設定する〜


目次に戻る


プログラムの動作中、特別なエラー(0で除算した)が発生したときなどにシグナルという物が発行されます。シグナルは別名ソフトウェア割り込みと言い、シグナルが発生すると、現在動作しているプログラムの状態にかかわらず強制的に別のことを実行します(たいていはプログラムの終了)。
 
シグナルが発生したときにデフォルトとは異なる処理をしたい場合は、まずシグナルが発生したときに呼び出される関数を定義する必要があります。
 
/* シグナルが発生したときに呼び出される関数の例 */
void yobareruyatu( int sig )
{
    printf("シグナル発生!\n");
}
シグナルが発生したときに呼び出される関数が定義できたら、その関数の名前とどのシグナルが発生したときに呼び出されるのかをsignal関数に引数として渡せばOK。
 
/* 「SIGUSR1」というシグナルが発生したらyobareruyatu関数を呼び出すように設定 */
signal( SIGUSR1 , yobareruyatu );
 
どういったタイミングでどのような名前のシグナルが発生するかはOS固有で一般には決まっていません。LINUXの場合は JM Project Manpage of SIGNAL 7 に一覧があります。Windowsの人はあまり使用しないと思います。


目次に戻る