日本-日本語
日本HPホーム 製品 & サービス OpenVMS製品情報
≫  お問い合わせ


OpenVMS マニュアル


 

OpenVMS ドキュメント
ライブラリ

タイトル
目次
まえがき
リファレンス・セクション
   ≫ライブラリ関数一覧
索引
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)


目次 索引

© 2012 Hewlett-Packard Development Company, L.P.