SIGEVENT
Section: Linux Programmer's Manual (7)
Updated: 2020-11-01
Index JM Home Page
名前
sigevent - 非同期ルーチンからの通知用の構造体
書式
#include <signal.h>
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); Linux-specific */
};
説明
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) 参照。
関連項目
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 プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。
関連キーワード
sigev,
フィールド,
通知,
SIGEV,
SIGEVENT,
設定,
シグナル,
int,
sigevent,
thread
Linux マニュアル 一覧
[man1]
[man2]
[man3]
[man4]
[man5]
[man6]
[man7]
[man8]
[a]
[b]
[c]
[d]
[e]
[f]
[g]
[h]
[i]
[j]
[k]
[l]
[m]
[n]
[o]
[p]
[q]
[r]
[s]
[t]
[u]
[v]
[w]
[x]
[y]
[z]
Index
- 名前
- 書式
- 説明
- 関連項目
- この文書について
This document was created by man2html, using the manual pages.
Time: 12:08:34 GMT, June 11, 2022