標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
XPG4.2 | 両方 | POSIX(ON) |
#define _XOPEN_SOURCE_EXTENDED 1
#include <signal.h>
int sigstack(struct sigstack *ss, struct sigstack *oss);
sigstack() 関数によって、呼び出しスレッドは、このスレッド自身が受信したシグナルの処理に使用する、アドレス・スペースのエリアを、システムに指示することができます。
oss 引数が NULL ポインターではない場合には、現行代替シグナル・ スタックのコンテキストを入れる sigstack 構造体を指している 必要があります。スレッドが現在、代替シグナル・スタックで実行中の場合には、この sigstack 構造体の ss_onstack メンバー に保管された値は、ゼロ以外になります。oss 引数が NULL ポインターの場合には、現行代替シグナル・スタックのコンテキスト は戻されません。
シグナルのアクションが、そのハンドラーを代替シグナル・スタック で実行する必要があることを示している場合には (sigaction() の呼び出し によって指定)、インプリメンテーションは、スレッドが現在 代替シグナル・スタックで実行中かどうかを調べます。実行中で なかった場合には、システムで、シグナル・ハンドラーの実行の 期間、代替シグナル・スタックに切り替えられます。
exec 関数の 1 つへの正常な呼び出しの後では、新規プロセス・イメージに代替シグナル・スタックはありません。
この関数は、従来からの運用上の理由から提供されます。 これは Single UNIX Specification、バージョン 2 のレガシー機能でしたが、 既に廃止され、Single UNIX Specification、バージョン 3 の一部として サポートされていません。新しいアプリケーションでは、sigstack() の代わりに sigaltstack() を使用してください。
Single UNIX Specification、バージョン 3 のために 書かれたアプリケーションで、この関数を引き続き使う必要がある場合は、 標準システム・ヘッダーを組み込む前に、フィーチャー・テスト・マクロ _UNIX03_WITHDRAWN を 定義してください。マクロは、Single UNIX Specification、バージョン 3 に移動された すべてのインターフェースおよびシンボルを公開します。
正常に実行された場合、sigstack() は 0 を戻します。