Manpages

名 前

sigsuspend − シ グ ナ ル を 待 つ

書 式

#include <signal.h>

int sigsuspend(const sigset_t *mask);

glibc 向 け の 機 能 検 査 マ ク ロ の 要 件 (feature_test_macros(7) 参 照 ):

sigsuspend(): _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _POSIX_SOURCE

説 明

sigsuspend() は 、 呼 び 出 し 元 プ ロ セ ス の シ グ ナ ル マ ス ク を mask で 指 定 さ れ た マ ス ク に 一 時 的 に 置 き 換 え 、 シ グ ナ ル ハ ン ド ラ ー の 起 動 も し く は プ ロ セ ス の 終 了 が ア ク シ ョ ン と し て 設 定 さ れ た シ グ ナ ル が 配 送 さ れ る ま で 、 そ の プ ロ セ ス を 停 止 す る 。 シ グ ナ ル が プ ロ セ ス を 終 了 さ せ る も の の 場 合 、 sigsuspend() は 返 ら な い 。 シ グ ナ ル が 捕 捉 さ れ た 場 合 、 シ グ ナ ル ハ ン ド ラ ー の 処 理 が 終 わ っ た 後 に sigsuspend() は 返 り 、 シ グ ナ ル マ ス ク は sigsuspend() が 呼 び 出 さ れ る 前 の 状 態 に 復 元 さ れ る 。

SIGKILLSIGSTOP を 禁 止 (block) す る こ と は で き な い ; こ れ ら の シ グ ナ ル を mask に 指 定 し て も 、 プ ロ セ ス の シ グ ナ ル マ ス ク は 影 響 を 受 け な い 。

返 り 値

sigsuspend() は 常 に −1 を 返 し 、 errno に エ ラ ー の 原 因 を 示 す 値 (通 常 は EINTR) を 設 定 す る 。

エ ラ ー

EFAULT

mask が 指 し て い る メ モ リ ー が 、 プ ロ セ ス の ア ド レ ス 空 間 の 有 効 な 部 分 で は な い 。

EINTR

シ ス テ ム コ ー ル は シ グ ナ ル に よ り 割 り 込 ま れ た 。

準 拠

POSIX.1−2001.

注 意

sigsuspend() は 、 通 常 、 ク リ テ ィ カ ル コ ー ド セ ク シ ョ ン (critical code section) の 実 行 中 に シ グ ナ ル が 配 送 さ れ る の を 防 止 す る た め に 、 sigprocmask(2) と 組 み 合 わ せ て 使 用 さ れ る 。 ま ず 最 初 に 、 呼 び 出 し 元 は sigprocmask(2) を 使 っ て シ グ ナ ル を 禁 止 す る 。 ク リ テ ィ カ ル コ ー ド が 完 了 す る と 、 呼 び 出 し 元 は sigprocmask(2) が (oldset 引 き 数 で ) 返 す シ グ ナ ル マ ス ク を 指 定 し て sigsuspend() を 呼 び 出 す こ と で 、 ク リ テ ィ カ ル コ ー ド 実 行 中 に 発 生 し た シ グ ナ ル を 待 つ こ と が で き る 。 シ グ ナ ル 集 合 の 操 作 に 関 す る 詳 細 は sigsetops(3) を 参 照 の こ と 。

関 連 項 目

kill(2), pause(2), sigaction(2), signal(2), sigprocmask(2), sigwaitinfo(2), sigsetops(3), sigwait(3), signal(7)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。