Manpages

名 前

sigevent − 非 同 期 ル ー チ ン か ら の 通 知 用 の 構 造 体

書 式

union sigval { /* Data passed with notification */
int sival_int; /* Integer value */
void *sival_ptr; /* Pointer value */ };

struct sigevent {
int sigev_notify; /* Notification method */
int sigev_signo; /* Notification signal */
union sigval sigev_value; /* Data passed with
notification */
void (*sigev_notify_function) (union sigval);
/* Function used for thread
notification (SIGEV_THREAD) */
void *sigev_notify_attributes;
/* Attributes for notification thread
(SIGEV_THREAD) */
pid_t sigev_notify_thread_id;
/* ID of thread to signal (SIGEV_THREAD_ID) */ };

説 明

sigevent 構 造 体 は 、 イ ベ ン ト に 関 す る 情 報 を プ ロ セ ス に 通 知 す る た め に 様 々 な API で 使 用 さ れ る (イ ベ ン ト の 例 と し て は 、 非 同 期 処 理 要 求 の 完 了 、 タ イ マ ー の 満 了 、 メ ッ セ ー ジ の 到 着 な ど )。 「 書 式 」 に 記 載 さ れ て い る 定 義 は お お よ そ の も の で あ る 。 sigevent 構 造 体 の い く つ か の フ ィ ー ル ド は 、 共 用 体 の 一 部 と し て 定 義 さ れ て い る も の も あ る 。 プ ロ グ ラ ム は 、 sigev_notify で 指 定 さ れ た 値 に 応 じ た フ ィ ー ル ド だ け を 利 用 す べ き で あ る 。

sigev_notify フ ィ ー ル ド は 、 通 知 を ど の よ う に 処 理 す べ き か を 指 定 す る 。 こ の フ ィ ー ル ド は 、 以 下 の い ず れ か の 値 で あ る 。
SIGEV_NONE
「 空 (null)」 の 通 知 。 イ ベ ン ト が 発 生 時 に は 何 も し な い こ と 。
SIGEV_SIGNAL

sigev_signo で 指 定 さ れ た シ グ ナ ル を 送 信 す る こ と で 、 プ ロ セ ス へ の 通 知 を 行 う 。

sigaction(2)SA_SIGINFO フ ラ グ を 使 っ た 登 録 さ れ た シ グ ナ ル ハ ン ド ラ ー に よ り シ グ ナ ル が 捕 捉 さ れ る と 、 シ グ ナ ル ハ ン ド ラ ー の 2 番 目 の 引 き 数 と し て 渡 さ れ た siginfo_t 構 造 体 の 以 下 の フ ィ ー ル ド が 設 定 さ れ る 。

si_code こ の フ ィ ー ル ド に は 通 知 を 配 送 し た

API に 応 じ た 決 ま る 値

が 設 定 さ れ る 。

si_signo こ の フ ィ ー ル ド に は シ グ ナ ル 番 号

(す な わ ち sigev_signo

と 同 じ 値 ) が 設 定 さ れ る 。

si_value こ の フ ィ ー ル ド に は

sigev_value で 指 定 さ れ た 値 が 設 定 さ

れ る 。

API に よ っ て は siginfo_t 構 造 体 の 他 の フ ィ ー ル ド が 設 定 さ れ る 場 合 も あ る 。 シ グ ナ ル を 受 け 取 っ た と き に は sigwaitinfo(2) で も 同 じ 情 報 が 得 ら れ る 。

SIGEV_THREAD 「 あ た か も 」 新 し い ス レ ッ ド セ ー フ の 開 始 関 数 で あ る か の よ う に sigev_notify_function を 起 動 す る こ と で 、 プ ロ セ ス へ の 通 知 を 行 う (実 装 の 可 能 性 と し て は 、 タ イ マ ー 通 知 の 度 に 新 し い ス レ ッ ド セ ー フ が 作 成 さ れ る 場 合 も 、 一 つ の ス レ ッ ド を 作 成 し て す べ て の 通 知 を 受 信 す る 場 合 も あ る )。 こ の 関 数 は sigev_value を 唯 一 の 引 き 数 と し て 起 動 さ れ る 。 sigev_notify_attributes は 、 NULL 以 外 の 場 合 は 、 新 し い ス レ ッ ド セ ー フ の 属 性 を 定 義 す る pthread_attr_t 構 造 体 を 指 し て い な け れ ば な ら な い (pthread_attr_init(3) 参 照 )。
SIGEV_THREAD_ID
(Linux 固 有 ) 現 在 の と こ ろ POSIX で の み 使 用 さ れ て い る 。 timer_create(2) 参 照 。

準 拠

POSIX.1−2001.

関 連 項 目

timer_create(2), aio_fsync(3), aio_read(3), aio_write(3), getaddrinfo_a(3), lio_listio(3), mq_notify(3), aio(7), pthreads(7)

こ の 文 書 に つ い て

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