インテル® Fortran コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

コンソール・イベント・ハンドラーの確立

Ctrl+C イベント処理は、Windows* オペレーティング・システム上で実行しているプロセスのスレッド特性のため、基本的に信頼性がありません。イベントハンドラーの実行は、ユーザーが Ctrl を押しながら C キーを入力したときに行われていた内容に依存します。どのような状況でもハンドラーを確立する方法は 2 つあります。Windows* API ルーチン SetConsoleCtrlHandler を直接使用するか、SIGNALQQ を使用して、C SIGINT または SIGBREAK 信号に対してハンドラーを確立することができます。

Fortran ランタイムシステムは、ランタイム初期化処理の一部として SetConsoleCtrlHandler への呼び出しを通じてコンソール・イベント・ハンドラーを確立します。このハンドラーの動作に関する詳細は、「デフォルトのコンソールイベントの処理」を参照してください。

独自のイベントハンドラーを確立するために SetConsoleCtrlHandler を呼び出した場合、そのハンドラーはコンソールイベントの最初に呼び出されます。

SIGNALQQ を使用して SIGINT または SIGBREAK 信号に対してハンドラーを確立した場合、C のランタイムシステムは、SetConsoleCtrlHandler への呼び出しを通じてコンソールイベントに対して内部ハンドラーを確立し、イベントの発生時にルーチンを任意の処理として記録します。イベントが C ランタイムハンドラーに送られると、信号に対する動作を SIG_DFL にリセットし、ハンドラールーチンを呼び出します。

コントロール・イベントから続行する場合、ルーチンへの動作をリセットするために、SIGNALQQ を再度呼び出す必要があります。ハンドラーは、引数として信号コード (SIGINT または SIGBREAK) で呼び出されます。ルーチンが C ランタイム・イベント・ハンドラーに戻った後、C ハンドラーはイベントが処理されたことを示す値 (TRUE) をオペレーティング・システムに返します。

関連情報