日本-日本語

製品  >  ソフトウェア  >  OpenVMS  >  マニュアル

OpenVMS マニュアル


≫ 

OpenVMS V8.3
ライブラリ

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

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


目次 索引




シグナルの処理に使用される代替スタックを定義します。これにより,カレント・プロセスとは別の環境でシグナルを処理できるようになります。この関数は非リエントラントです。

形式

#include <signal.h>

int sigstack (struct sigstack *ss, struct sigstack *oss);




引数



ss

ss が NULL でない場合には,シグナルを配信するシグナル・スタックとして使用される指定されたメモリ・セクションへのポインタを保持する構造体のアドレスを指定します。

oss

oss が NULL でない場合には,スタック・アドレスの古い値が返される構造体のアドレスを指定します。

説明

sigstack構造体は,標準ヘッダ・ファイル <signal.h>に定義されています。


struct sigstack 
   { 
      char     *ss_sp; 
      int      ss_onstack; 
   }; 

sigvec関数が,シグナル・ハンドラをシグナル・スタック上で実行するように指定した場合,システムはプロセスがすでにそのスタック上で実行されているかどうかをチェックします。プロセスがシグナル・スタック上で実行されていなければ,システムはシグナル・ハンドラが実行されている間はシグナル・スタックに切り替えるように調整を行います。 oss 引数が NULL でなければ,シグナル・スタックの現在の状態が返されます。

シグナル・スタックには適切な量のストレージが割り当てられなくてはなりません。ランタイム・スタックのように拡張されることはないからです。たとえば,シグナル・ハンドラが printfや,これと同じほど複雑な HP C RTL ルーチンを呼び出す場合には,シグナル・スタック用に少なくとも 12,000 バイトのストレージを割り当てる必要があります。スタックがオーバフローを起こすと,エラーが発生します。

ss_spは,割り当てられたメモリ領域の終端よりも少なくとも 4 バイト前の位置をポイントしていなくては なりません (例を参照)。これはアーキテクチャに依存しており,他のマシン・アーキテクチャやオペレーティング・システムへの移植性はないと考えられます。




戻り値

0 成功を示します。
-1    失敗を示します。



#define ss_size 15000 
static char mystack[ss_size]; 
struct sigstack ss = {&mystack + sizeof(mystack) - sizeof(void *), 1}; 


目次 索引

印刷用画面へ
プライバシー 本サイト利用時の合意事項