Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all
名前
sigpause - ブロックされたシグナルをアトミックに解放して割り込みを待つ
書式
#include <signal.h> int sigpause(int sigmask); /* BSD (ただし「備考」を参照) */ int sigpause(int sig); /* System V / UNIX 95 */
説明
この関数を使わないこと。 代わりに sigsuspend(2) を使うこと。 関数 sigpause() はシグナルを待つように設計されている。 この関数はプロセスのシグナルマスク (ブロックされたシグナルのセット) を変更し、 シグナルが到着するのを待つ。 シグナルが到着す ると、シグナルマスクは元に戻される。
返り値
sigpause() が返った場合、この関数はシグナルによって割り込まれている。 返り値は -1 で、 errno は EINTR に設定される。
属性
この節で使用されている用語の説明については、 attributes(7) を参照。 ┌─────────────────┬───────────────┬─────────┐ │インターフェース │ 属性 │ 値 │ ├─────────────────┼───────────────┼─────────┤ │sigpause() │ Thread safety │ MT-Safe │ └─────────────────┴───────────────┴─────────┘
準拠
System V 版の sigpause() は POSIX.1-2001 で標準化されている。 POSIX.1-2008 でも規定されて いるが、ここでは廃止予定 (obsolete) 扱いとなっている。
注意
歴史 この関数の古典的な BSD 版は 4.2BSD で登場した。 この関数はプロセスのシグナルマスクを sigmask に設定する。 UNIX 95 では BSD 版と互換性のない System V 版のこの関数が標準化され た。 UNIX 95 版は、指定されたシグナル sig をプロセスのシグナルマスクから削除するだけであ る。 同じ名前で互換性のない 2 つの関数があるという不幸な事態は、 sigsuspend(2) 関数によっ て解消された。 この関数は (int の代わりに) sigset_t * 引数をとる。 Linux での注意 Linux では、このルーチンは Sparc (sparc64) アーキテクチャーでのみ システムコールとなってい る。 機能検査マクロ _BSD_SOURCE が定義され、 _POSIX_SOURCE, _POSIX_C_SOURCE, _XOPEN_SOURCE, _GNU_SOURCE, _SVID_SOURCE のいずれも定義されていない場合、 glibc は BSD 版を使う。 それ以 外の場合には、System V 版を使用し、この場合には宣言を得るためには以下のように機能検査マク ロを定義しなければならない。 * glibc 2.26 以降: _XOPEN_SOURCE >= 500 * glibc 2.25 以前: _XOPEN_SOURCE glibc 2.19 以降では、 <signal.h> では System V 版だけが公開される。 BSD 版の sigpause() を 使用していたアプリケーションは sigsuspend(2) を使用するように修正すべきである。
関連項目
kill(2), sigaction(2), sigprocmask(2), sigsuspend(2), sigblock(3), sigvec(3), feature_test_macros(7)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの 説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。