set_terminate() - terminate() 用の関数の登録

標準

標準/拡張機能 C/C++ 依存項目

ANSI/ISO
C++

C++ のみ  

形式

#include <exception>

terminate_handler set_terminate(terminate_handler ph) throw();

機能説明

set_terminate() 関数は、z/OS® XL C++ エラー処理メカニズムの一部です。set_terminate() に提供される引数は、ヘッダー <exception> に定義される terminate_handler 型 (すなわち、void 戻り型の関数、および引数なしの関数へのポインター) です。指定された関数は、terminate() 関数によって呼び出されます。

terminate() に登録されている関数は、caller() に戻ることなく、プログラムの実行を終了しなければなりません。set_terminate() がまだ呼び出されていない場合、terminate() は、システム定義のデフォルト終了ハンドラーを呼び出し、その終了ハンドラーが abort() を呼び出します。

マルチスレッド環境では、set_terminate() 呼び出しの発行によって作成された終了関数が、(POSIX) プロセスのすべてのスレッドに適用されます。スレッドが、その実行スレッドが取得できない例外を投入した場合は、terminate() が呼び出されます。デフォルトの terminate() アクションは、デフォルト時に SIGABRT シグナルを発生させる abort() を呼び出します。シグナル・ハンドラーがない場合には、SIGABRT によりプロセスが 終了されます。終了関数として pthread_exit() を呼び出す関数を提供することによって、これをスレッド・レベル終了で上書きできます。これでスレッドは終了しますが、プロセスは終了しません。

戻り値

set_terminate() は、直前の terminate_handler のアドレスを戻します。

set_terminate() 関数を含む、z/OS XL C++ 例外処理の詳細については、「z/OS XL C/C++ ランゲージ・リファレンス」を参照してください。

関連情報