名 前
sigprocmask − 禁 止 す る シ グ ナ ル の 確 認 と 変 更
書 式
#include <signal.h>
int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);
glibc 向 け の 機 能 検 査 マ ク ロ の 要 件 (feature_test_macros(7) 参 照 ):
sigprocmask(): _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _POSIX_SOURCE
説 明
sigprocmask()
を 使 う と 、 呼
び 出 し た ス レ
ッ ド の シ グ ナ
ル マ ス ク の 取
得 /変 更 が で き
る 。 シ グ ナ ル
マ ス ク は 、 呼
び 出 し 元 に 対
し て 現 在 配 送
が 禁 止 さ れ て
い る シ グ ナ ル
の 集 合 の こ と
で あ る (詳 細 に
つ い て は signal(7)
も 参 照 の こ と
)。 こ の コ ー ル
の 動 作 は how の
値 に よ っ て 決
ま る :
SIG_BLOCK 禁 止 さ れ た
シ グ ナ ル の 集
合 は 現 在 の 値
と set 引 き 数 を
結 合 し た も の
と な る 。
SIG_UNBLOCK 現 在 禁 止 さ
れ て い る シ グ
ナ ル の 集 合 か
ら set に あ る シ
グ ナ ル を 取 り
除 く 。 禁 止 さ
れ て い な い シ
グ ナ ル を 取 り
除 こ う と す る
こ と も 認 め ら
れ て い る 。
SIG_SETMASK 禁 止 さ れ て
い る シ グ ナ ル
の 集 合 に set 引
き 数 を 設 定 す
る 。
oldset が NULL で な け れ ば 、 シ グ ナ ル マ ス ク の 今 ま で の 値 を oldset に 格 納 す る 。
set が NULL で あ れ ば 、 シ グ ナ ル マ ス ク は 変 更 さ れ な い (す な わ ち 、 how は 無 視 さ れ る )。 set の 値 に か か わ ら ず 、 現 在 の シ グ ナ ル マ ス ク の 値 は oldset に 入 れ て 返 さ れ る (但 し 、 oldset が NULL で な い 場 合 )。 マ ル チ ス レ ッ ド の プ ロ セ ス で sigprocmask() を 使 用 し た 場 合 の 動 作 は 規 定 さ れ て い な い 。 pthread_sigmask(3) を 参 照 の こ と 。
返 り 値
sigprocmask() は 成 功 し た 場 合 0 を 返 す 。 エ ラ ー の 場 合 、 −1 を 返 し 、 errno に エ ラ ー の 原 因 を 示 す 値 を 設 定 す る 。
エ ラ ー
EFAULT 引 き 数 |
set か oldset が プ ロ セ ス に 割 り 当 て ら れ た ア ド レ ス 空 間 の 外 |
を 指 し て い る 。
EINVAL |
how に 指 定 さ れ た 値 が 有 効 で は な い 。 |
準 拠
POSIX.1−2001.
注 意
SIGKILL や SIGSTOP を 禁 止 す る こ と は で き な い 。 禁 止 し よ う と し て も 黙 っ て 無 視 さ れ る 。 プ ロ セ ス 内 の 各 ス レ ッ ド は そ れ ぞ れ 専 用 の シ グ ナ ル マ ス ク を 持 つ 。
fork(2) 経 由 で 作 成 さ れ た 子 プ ロ セ ス は 親 プ ロ セ ス の シ グ ナ ル マ ス ク の コ ピ ー を 継 承 す る 。 execve(2) の 前 後 で シ グ ナ ル マ ス ク は 保 持 さ れ る 。 シ グ ナ ル SIGBUS, SIGFPE, SIGILL, SIGSEGV が 禁 止 さ れ て い る 間 に 生 成 さ れ た 場 合 で 、 そ の シ グ ナ ル が kill(2), sigqueue(3), raise(3) に よ っ て 生 成 さ れ た も の で な い と き に は 、 そ の 後 の 動 作 は 未 定 義 で あ る 。 シ グ ナ ル 集 合 の 操 作 に 関 す る 詳 細 は sigsetops(3) を 参 照 の こ と 。
関 連 項 目
kill(2), pause(2), sigaction(2), signal(2), sigpending(2), sigsuspend(2), pthread_sigmask(3), sigqueue(3), sigsetops(3), signal(7)
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。