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


OpenVMS マニュアル


 

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

タイトル
目次
まえがき
リファレンス・セクション
   ≫ライブラリ関数一覧
索引
PDF
OpenVMS ホーム

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


目次 索引




ブロックされているシグナルのセットをアトミックに変更し,シグナルを待ちます。

形式

#include <signal.h>

int sigsuspend (const sigset_t *signal_mask);


引数



signal_mask

シグナルのセットへのポインタ。

説明

sigsuspend関数は,プロセスのシグナル・マスクを, signal_mask 引数がポイントするシグナルのセットに置き換えます。その後,アクションとしてシグナル・キャッチ関数を実行するか,プロセスを終了させるシグナルが配信されるまで,プロセスの実行を中断します。 sigsuspend関数では, SIGKILL シグナルや SIGSTOP シグナルをブロックすることはできません。プログラムがこれらのシグナルのブロックを試みた場合でも, sigsuspendはエラーを発生させません。

シグナルの配信によってプロセスが終了する場合, sigsuspendは返りません。シグナルの配信によってシグナル・キャッチ関数が実行される場合, sigsuspendはシグナル・キャッチ関数が返った後に返り,シグナル・マスクは sigsuspendの呼び出しの前のセットに復元されます。

sigsuspend関数は,1 つのアトミックな操作として,シグナル・マスクを設定し,ブロックされていないシグナルを待ちます。つまり,マスクの設定とシグナルを待つ操作の間にシグナルを発生させることはできません。プログラムが sigprocmaskSIG_SETMASK と sigsuspendを別々に呼び出した場合,これらの関数の間に発生したシグナルは,通常は sigsuspendには意識されません。

通常の用途では,シグナルはクリティカル・セクションの先頭で, sigprocmask関数を使ってブロックされます。その後,プロセスは実行すべき作業があるかどうかを調べます。作業がなければ,プロセスは,前に sigprocmaskから返されたマスクを使って sigsuspendを呼び出して,作業を待ちます。

シグナルが呼び出し元プロセスによってキャッチされ,制御がシグナル・ハンドラから返った場合,呼び出し元プロセスは sigsuspendの後から実行を再開します。 sigsuspendはつねに値 - 1 を返し, errnoを EINTR に設定します。

sigpausesigprocmaskも参照してください。


目次 索引

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