Man page - sigsuspend(2)

Packages contains this manual

Available languages:

en fr ja ru ro de

Manual

SIGSUSPEND

名 前
書 式
説 明
返 り 値
エ ラ ー
準 拠
注 意
C ラ イ ブ ラ リ と カ ー ネ ル の 違 い
関 連 項 目
こ の 文 書 に つ い て

名 前

sigsuspend, rt_sigsuspend - シ グ ナ ル を 待 つ

書 式

#include <signal.h>

int sigsuspend(const sigset_t * mask );

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

sigsuspend (): _POSIX_C_SOURCE

説 明

sigsuspend () は 、 呼 び 出 し 元 ス レ ッ ド の シ グ ナ ル マ ス ク を mask で 指 定 さ れ た マ ス ク に 一 時 的 に 置 き 換 え 、 シ グ ナ ル ハ ン ド ラ ー の 起 動 も し く は プ ロ セ ス の 終 了 が ア ク シ ョ ン と し て 設 定 さ れ た シ グ ナ ル が 配 送 さ れ る ま で 、 そ の ス レ ッ ド を 停 止 す る 。

シ グ ナ ル が プ ロ セ ス を 終 了 さ せ る も の の 場 合 、 sigsuspend () は 返 ら な い 。 シ グ ナ ル が 捕 捉 さ れ た 場 合 、 シ グ ナ ル ハ ン ド ラ ー の 処 理 が 終 わ っ た 後 に sigsuspend () は 返 り 、 シ グ ナ ル マ ス ク は sigsuspend () が 呼 び 出 さ れ る 前 の 状 態 に 復 元 さ れ る 。

SIGKILL SIGSTOP を 禁 止 (block) す る こ と は で き な い ; こ れ ら の シ グ ナ ル を mask に 指 定 し て も 、 そ の ス レ ッ ド の シ グ ナ ル マ ス ク は 影 響 を 受 け な い 。

返 り 値

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

エ ラ ー

EFAULT

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

EINTR

シ ス テ ム コ ー ル は シ グ ナ ル に よ り 割 り 込 ま れ た 。 signal (7) を 参 照 。

準 拠

POSIX.1-2001, POSIX.1-2008.

注 意

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

シ グ ナ ル 集 合 の 操 作 に 関 す る 詳 細 は sigsetops (3) を 参 照 の こ と 。

C ラ イ ブ ラ リ と カ ー ネ ル の 違 い

The original Linux system call was named sigsuspend (). However, with the addition of real-time signals in Linux 2.2, the fixed-size, 32-bit sigset_t type supported by that system call was no longer fit for purpose. Consequently, a new system call, rt_sigsuspend (), was added to support an enlarged sigset_t type. The new system call takes a second argument, size_t sigsetsize , which specifies the size in bytes of the signal set in mask . This argument is currently required to have the value sizeof(sigset_t) (or the error EINVAL results). The glibc sigsuspend () wrapper function hides these details from us, transparently calling rt_sigsuspend () when the kernel provides it.

関 連 項 目

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

こ の 文 書 に つ い て

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