名 前
sigpause − ブ ロ ッ ク さ れ た シ グ ナ ル を ア ト ミ ッ ク に 解 放 し て 割 り 込 み を 待 つ
書 式
#include <signal.h>
int sigpause(int sigmask); /* BSD (た だ し 「 備 考 」 を 参 照 ) */
int sigpause(int sig); /* System V / UNIX 95 */
説 明
こ の 関 数 を 使 わ な い こ と 。 代 わ り に sigsuspend(2) を 使 う こ と 。 関 数 sigpause() は シ グ ナ ル を 待 つ よ う に 設 計 さ れ て い る 。 こ の 関 数 は プ ロ セ ス の シ グ ナ ル マ ス ク (ブ ロ ッ ク さ れ た シ グ ナ ル の セ ッ ト ) を 変 更 し 、 シ グ ナ ル が 到 着 す る の を 待 つ 。 シ グ ナ ル が 到 着 す る と 、 シ グ ナ ル マ ス ク は 元 に 戻 さ れ る 。
返 り 値
sigpause() が 返 っ た 場 合 、 こ の 関 数 は シ グ ナ ル に よ っ て 割 り 込 ま れ て い る 。 返 り 値 は −1 で 、 errno は EINTR に 設 定 さ れ る 。
属 性
マ ル チ ス レ ッ デ ィ ン グ (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/ に 書 か れ て い る 。