日本-日本語
≫  お問い合わせ

製品とサービス >  ソフトウェアとOS >  OpenVMS >  マニュアル

OpenVMS マニュアル


≫ 

OpenVMS V8.3
ライブラリ

タイトル
目次
まえがき
第 1 章:リファレンス・セクション
索引
PDF
OpenVMS ホーム

HP OpenVMS
HP C ランタイム・ライブラリ・リファレンス・マニュアル (下巻)


目次 索引




特定のルーチン用に OpenVMS 例外ハンドラを設定するために使用されます。この関数は,それを呼び出したルーチンの中で,特殊な HP C RTL 例外ハンドラを設定します。この特殊なハンドラは,後のルーチン内で発生するすべての RTL 関連の例外をキャッチし,それ以外のすべての例外をプログラマが用意したハンドラに渡します。

形式

#include <signal.h>

void VAXC$ESTABLISH (unsigned int (*exception_handler)(void *sigarr, void *mecharr));




引数



exception_handler

OpenVMS 例外ハンドラとして設定する関数の名前。この関数へのポインタを, VAXC$ESTABLISHへのパラメータとして渡すことになります。

sigarr

シグナル・アレイへのポインタ。

mecharr

メカニズム・アレイへのポインタ。

説明

プログラムが HP C RTL ルーチンの setjmpまたは longjmpを使用するときには, LIB$ESTABLISHの代わりに VAXC$ESTABLISHを使用する必要があります。 setjmplongjmp,または sigsetjmpsiglongjmpを参照してください。

VAXC$ESTABLISH関数は HP C for OpenVMS 関数からしか呼び出せません。この関数は, HP C コンパイラがランタイム・スタック上に割り当てるデータ・スペースに依存しているからです。 HP C 関数から直接に OpenVMS システム・ライブラリ・ルーチン LIB$ESTABLISHを呼び出すと, setjmpおよび longjmp関数で未定義の動作が発生します。

OpenVMS 例外に UNIX スタイルのシグナルを生成させるためには,ユーザ例外ハンドラは,自分が処理したくない例外を受信したときに SS$_RESIGNALを返さなくてはなりません。 SS$_NORMALを返すと, UNIX スタイルのシグナルの生成は行われません。 UNIX シグナルは,メインの C プログラムのスタック・フレーム内の例外ハンドラによって生成されたときと同じように扱われます。すべての OpenVMS 例外が UNIX シグナルに対応しているわけではありません。 OpenVMS 例外と UNIX スタイルのシグナルの関係については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 4 章を参照してください。

引数 NULL を指定して VAXC$ESTABLISHを呼び出すと,そのルーチン内の既存のハンドラが取り消されます。

注意

  • OpenVMS Alpha システムでは, VAXC$ESTABLISHは, HP C RTL 関数ではなく,コンパイラの組み込み関数として実装されている。 (Alpha only)

  • OpenVMS VAX システムでは,/NAMES=AS_IS を指定してコンパイルされたプログラムは,そのプログラムが /PREFIX_LIBRARY_ENTRIES スイッチを指定してコンパイルされていたかどうかにかかわらず,名前 VAXC$ESTABLISHを解決するために SYS$LIBRARY:DECCRTL.OLB をリンクする必要がある。これは実装内における制約である。 (VAX only)


目次 索引

印刷用画面へ
プライバシー 本サイト利用時の合意事項 ウェブマスターに連絡