Man page - sigqueue(3)

Packages contains this manual

Available languages:

en fr es ja ru ro

Manual

SIGQUEUE

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

名 前

sigqueue - シ グ ナ ル と デ ー タ を プ ロ セ ス に 送 る

書 式

#include <signal.h>

int sigqueue(pid_t pid , int sig , const union sigval value );

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

sigqueue (): _POSIX_C_SOURCE >= 199309L

説 明

sigqueue () は sig で 指 定 さ れ た シ グ ナ ル を 、 PID が pid で あ る プ ロ セ ス に 送 る 。 シ グ ナ ル を 送 る の に 必 要 な 権 限 は kill (2) と 同 じ で あ る 。 kill (2) と 同 様 に 、 ヌ ル シ グ ナ ル (0) を 使 っ て 指 定 し た PID の プ ロ セ ス が 存 在 す る か を チ ェ ッ ク す る こ と が で き る 。

value 引 数 は シ グ ナ ル と 一 緒 に 送 る デ ー タ の 付 属 ア イ テ ム を 指 定 す る 。 value は (整 数 ま た は ポ イ ン タ ー の 値 で あ り ) 以 下 の よ う な 型 で あ る 。

union sigval {
int sival_int;
void *sival_ptr;
};

受 取 先 の プ ロ セ ス に 、 こ の シ グ ナ ル に 対 す る ハ ン ド ラ ー を ( sigaction (2) に SA_SIGINFO を 指 定 し て ) イ ン ス ト ー ル し て お く と 、 そ の ハ ン ド ラ ー の 第 2 引 数 に 渡 さ れ る siginfo_t 構 造 体 の si_value フ ィ ー ル ド に よ っ て 、 こ の デ ー タ を 取 得 で き る 。 さ ら に 、 こ の 構 造 体 の si_code フ ィ ー ル ド は SI_QUEUE に 設 定 さ れ る 。

返 り 値

成 功 し た 場 合 、 sigqueue () は 0 を 返 す 。 こ れ は 受 け 取 り 側 プ ロ セ ス の 待 ち 行 列 に シ グ ナ ル が 正 し く 入 れ ら れ た こ と を 示 す 。 失 敗 し た 場 合 は -1 が 返 さ れ 、 errno が エ ラ ー を 表 す 値 に 設 定 さ れ る 。

エ ラ ー

EAGAIN

待 ち 行 列 に 入 れ ら れ る シ グ ナ ル の 最 大 数 に 達 し た (よ り 詳 し い 情 報 は signal (7) を 参 照 す る こ と )。

EINVAL

sig が 不 正 で あ る 。

EPERM

こ の プ ロ セ ス に は 、 受 け 取 り 側 プ ロ セ ス に シ グ ナ ル を 送 る 権 限 が な い 。 必 要 な 権 限 に つ い て は 、 kill (2) を 参 照 す る こ と 。

ESRCH

pid に マ ッ チ す る PID の プ ロ セ ス が な い 。

バ ー ジ ョ ン

sigqueue () と そ の 裏 で 使 わ れ る rt_sigqueueinfo () シ ス テ ム コ ー ル は Linux 2.2 で 初 め て 登 場 し た 。

属 性

こ の 節 で 使 用 さ れ て い る 用 語 の 説 明 に つ い て は 、 attributes (7) を 参 照 。

Image grohtml-22613-1.png

準 拠

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

注 意

こ の 関 数 を 呼 び 出 し た プ ロ セ ス に こ の 関 数 が シ グ ナ ル を 送 っ た と き に 、 シ グ ナ ル が 呼 び 出 し 側 ス レ ッ ド に ブ ロ ッ ク さ れ ず 、 か つ (シ グ ナ ル が ブ ロ ッ ク さ れ な か っ た 、 ま た は sigwait (3) を 使 用 す る の を 待 っ て い る こ と に よ り ) こ の シ グ ナ ル を 扱 う ス レ ッ ド が 何 も な い 場 合 は 、 こ の 関 数 が リ タ ー ン す る 前 に 、 少 な く と も そ の ス レ ッ ド に 対 し て シ グ ナ ル が 配 送 さ れ て い な け れ ば な ら な い 。

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

Linux で は 、 sigqueue () は rt_sigqueueinfo (2) シ ス テ ム コ ー ル を 使 っ て 実 装 さ れ て い る 。 両 者 に は 3 番 目 の 引 数 に 違 い が あ り 、 rt_sigqueueinfo (2) で は 3 番 目 の 引 数 は siginfo_t 構 造 体 で あ る 。 siginfo_t 構 造 体 は 、 シ グ ナ ル を 受 信 す る プ ロ セ ス の シ グ ナ ル ハ ン ド ラ ー に 渡 さ れ た り 、 シ グ ナ ル 受 信 プ ロ セ ス の sigtimedwait (2) シ ス テ ム コ ー ル か ら 返 さ れ た り す る 。 glibc の sigqueue () ラ ッ パ ー 関 数 内 部 で は 、 こ の 引 数 uinfo は 以 下 の よ う に 初 期 化 さ れ る 。

uinfo.si_signo = sig; /* Argument supplied to sigqueue() */
uinfo.si_code = SI_QUEUE;
uinfo.si_pid = getpid(); /* Process ID of sender */
uinfo.si_uid = getuid(); /* Real UID of sender */
uinfo.si_value = val; /* Argument supplied to sigqueue() */

関 連 項 目

kill (2), rt_sigqueueinfo (2), sigaction (2), signal (2), pthread_sigqueue (3), sigwait (3), signal (7)

こ の 文 書 に つ い て

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