SIGPAUSE

Section: Linux Programmer's Manual (3)
Updated: 2014-08-19
Index JM Home Page roff page
 

名前

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

書式

#include <signal.h>

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

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

説明

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

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

返り値

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

属性

 

マルチスレッディング (pthreads(7) 参照)

sigpause() 関数はスレッドセーフである。  

準拠

System V 版の sigpause() は POSIX.1-2001 で標準化されている。  

注意

 

歴史

この関数の古典的な 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 版を使用する (宣言を得るためには _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 プロジェクトのリリース 3.79 の一部である。 プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。


 

Index

名前
書式
説明
返り値
属性
マルチスレッディング (pthreads(7) 参照)
準拠
注意
歴史
Linux での注意
関連項目
この文書について

This document was created by man2html, using the manual pages.
Time: 03:33:26 GMT, March 14, 2018