信号は、次に示すような、さまざまな発信元から生成されるアブノーマルなイベントです:
端末のユーザ
プログラムまたはハードウェアのエラー
別のプログラムからの要求
制御端末にアクセスできるようにプロセスが停止されたとき
例えば、次のような特定のイベントに対して、信号の発行を設定できます。
プロセスが停止された後に、プロセスを再開するとき
子プロセスの状況が変化したとき
端末で入力可能な状態になったとき
何も処理が行われないと、受信プロセスを終了する信号 (オプションで、core ファイルを作成します) と、プロセスが何か要求しない限り無視されるだけの信号があります。
特定の信号を除いて、signal または sigaction ルーチンを呼び出すことによって、指定した信号を無視するか、またはユーザが記述した信号ハンドラの位置に割り込みを発生させる (制御を渡す) ことができます。
信号に対して signal を呼び出し、次のいずれかの処理を設定できます:
指定した信号 (番号による指定) を無視する。
指定した信号に対してデフォルトの処理を行う。これによって、以前に設定した処理をリセットできます。
指定した信号から、名前によって指定された信号を受け取るためのプロシージャに制御を移す。
signal ルーチンを呼び出すことによって、信号に対する処理を変更できます (オペレーティング・システムの信号を遮断して、プロセスの中断を防止するなど)。
プログラムを起動すると、インテル® Fortran RTL は以下の信号を検出するように準備します:
信号 |
インテル Fortran RTL メッセージ |
SIGFPE |
Floating-point exception (番号 75) |
SIGINT |
Process interrupted (number 69) |
SIGIOT |
IOT trap signal (number 76) |
SIGQUIT |
Process quit (number 79) |
SIGSEGV |
Segmentation fault (番号 174) |
SIGTERM |
Process killed (number 78) |
signal ルーチンを呼び出す (各信号の番号を指定) ことで、インテル Fortran RTL によって設定された信号処理機能が無視されます。デフォルトの処理を復元するには、最初の signal の呼び出しから返された値を保存する方法しかありません。
デバッガを使用している場合は、インテル Fortran RTL が適切な信号を受け取り、処理できるコマンドを入力しなければならないことがあります。