Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all bug

名前

       sigpause - ブロックされたシグナルをアトミックに解放して割り込みを待つ

書式

       #include <signal.h>

       int sigpause(int sigmask);  /* BSD (ただし「備考」を参照) */

       int sigpause(int sig);      /* System V / UNIX 95 */

説明

       この関数を使わないこと。 代わりに sigsuspend(2)  を使うこと。

       関数 sigpause()  はシグナルを待つように設計されている。 この関数はプロセスのシグナルマスク
       (ブロックされたシグナルのセット) を変更し、 シグナルが到着するのを待つ。  シグナルが到着す
       ると、シグナルマスクは元に戻される。

返り値

       sigpause()   が返った場合、この関数はシグナルによって割り込まれている。  返り値は  -1 で、
       errnoEINTR に設定される。

属性

       この節で使用されている用語の説明については、 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/ に書かれている。