日本-日本語
日本HPホーム 製品 & サービス サポート & ドライバー ソリューション ご購入方法
≫  お問い合わせ

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

OpenVMS マニュアル


 

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

タイトルページ
目次
まえがき
第 1 章:はじめに
第 2 章:入出力について
第 3 章:文字/文字列/引数リスト関数
第 4 章:エラー処理とシグナル処理
第 5 章:サブプロセス関数
第 6 章:Curses画面管理関数とマクロ
第 7 章:算術関数
第 8 章:メモリ割り当て関数
第 9 章:システム関数
第 10 章:国際化ソフトウェアの開発
第 11 章:日付/時刻関数
第 12 章:シンボリックリンクとPOSIXパス名
付録 A:各OSバージョンでサポートする関数一覧
付録 B:非標準ヘッダに複製されているプロトタイプ
索引
PDF
OpenVMS ホーム

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


目次 索引

OpenVMS Alpha のシグナル処理に関する注意 (Alpha only)

  • OpenVMS VAX システムに存在するシグナルはすべて OpenVMS Alpha システムにも存在しますが,対応する OpenVMS 例外とコードは,多くの場合異なります。これは,Alpha プロセッサでは,2 つの新しい OpenVMS 例外が追加され,複数の例外が無効になったからです。

  • OpenVMS Alpha システムのすべての浮動小数点例外は, OpenVMS 例外 SS$_HPARITH ( 高性能算術演算トラップ ) によって通知されます。発生した特定のタイプのトラップは,例外サマリ・ロングワードを使用することによって HP C RTL で変換されます。このロングワードは,高性能算術演算トラップが通知されるときに設定されます。

表 4-5 HP C RTLのシグナルと対応する OpenVMS Integrity 例外 (Integrity only)
名前 OpenVMS 例外 シグナルを生成するイベント コード
SIGABRT SS$_OPCCUS abort 関数 --
SIGALRM SS$_ASTFLT alarm 関数 --
SIGBUS SS$_ACCVIO アクセス違反 --
SIGBUS SS$_CMODUSER 変更モード・ユーザ --
SIGCHLD C$_SIGCHLD 子プロセスの停止 --
SIGEMT SS$_COMPAT 互換性モード・トラップ --
SIGFPE SS$_DECOVF 10 進オーバフロー・トラップ FPE_DECOVF_TRAP
SIGFPE SS$_DECDIV 10 進数除算トラップ FPE_DECDIV_TRAP
SIGFPE SS$_DECINV 10 進数不正オペランド・トラップ FPE_DECINV_TRAP
SIGFPE SS$_FLTDENORMAL デノーマル・オペランド・フォルト FPE_FLTDENORMAL_FAULT
SIGFPE SS$_FLTDIV 0 による浮動小数点/10 進数除算 FPE_FLTDIV_TRAP
SIGFPE SS$_FLTDIV_F 0 による浮動小数点除算フォルト FPE_FLTDIV_FAULT
SIGFPE SS$_FLTINE 不正確操作トラップ FPE_FLTINE_TRAP
SIGFPE SS$_FLTINV 不正操作トラップ FPE_FLTINV_TRAP
SIGFPE SS$_FLTINV_F 不正操作フォルト FPE_FLTINV_FAULT
SIGFPE SS$_FLTOVF 浮動小数点オーバフロー・トラップ FPE_FLTOVF_TRAP
SIGFPE SS$_FLTUND 浮動小数点アンダフロー・トラップ FPE_FLTUND_TRAP
SIGFPE SS$_INTDIV 0 による整数除算 FPE_INTDIV_TRAP
SIGFPE SS$_INTOVF 整数オーバフロー FPE_INTOVF_TRAP
SIGFPE SS$_SUBRNG 添字の範囲 FPE_SUBRNG_TRAP
SIGHUP SS$_HANGUP データ・セット・ハングアップ --
SIGILL SS$_OPCDEC 予約命令 ILL_PRIVIN_FAULT
SIGILL SS$_ROPRAND 予約オペランド ILL_RESOP_FAULT
SIGINT SS$_CONTROLC OpenVMS Ctrl/C 割り込み --
SIGIOT SS$_OPCCUS カスタマ予約 op コード --
SIGKILL SS$_ABORT 外部シグナルのみ --
SIGQUIT SS$_CONTROLY raise 関数 --
SIGPIPE SS$_NOMBX メールボックスなし --
SIGPIPE C$_SIGPIPE 壊れたパイプ --
SIGSEGV SS$_ACCVIO 長さ違反 --
SIGSEGV SS$_CMODSUPR 変更モード・スーパバイザ --
SIGSYS SS$_BADPARAM システム呼び出しに対する不正な引数 --
SIGTERM 実装されていない -- --
SIGTRAP SS$_TBIT TBIT トレース・トラップ --
SIGTRAP SS$_BREAK ブレークポイント・フォルト命令 --
SIGUSR1 C$_SIGUSR1 raise 関数 --
SIGUSR2 C$_SIGUSR2 raise 関数 --
SIGWINCH C$_SIGWINCH raise 関数 --



4.3 プログラムの例

例 4-1 は, signalalarmpause関数の動作方法を示しています。また,プログラムの終了を防止するために,シグナルを検出するようにシグナル・ハンドラを設定する方法も示しています。

例 4-1 プログラムの一時停止と再開
/*    CHAP_4_SUSPEND_RESUME.C                                   */ 
 
/* This program shows how to alternately suspend and resume a   */ 
/* program using the signal, alarm, and pause functions.        */ 
 
#define SECONDS 5 
 
#include <stdio.h> 
#include <signal.h> 
 
int number_of_alarms = 5;       /*  Set alarm counter.            */ 
 
void alarm_action(int); 
 
main() 
{ 
    signal(SIGALRM, alarm_action); /*  Establish a signal handler. */ 
                                   /*  to catch the SIGALRM signal.*/ 
 
    alarm(SECONDS);     /* Set alarm clock for 5 seconds. */ 
 
    pause();    /*  Suspend the process until     * 
                 *  the signal is received.       */ 
} 
 
void alarm_action(int x) 
{ 
    printf("\t<%d\007>", number_of_alarms); /*  Print the value of  */ 
                                            /*  the alarm counter.  */ 
 
    signal(SIGALRM, alarm_action);      /*  Reset the signal.       */ 
 
    alarm(SECONDS);     /*  Set the alarm clock.      */ 
 
    if (--number_of_alarms)     /*  Decrement alarm counter.  */ 
        pause(); 
} 

例 4-1 から次の出力が生成されます。

$ RUN  EXAMPLE
       <5>   <4>   <3>   <2>   <1>


目次 索引

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