SIMPLE SOLUTIONS

SIGEVENT(7) - Linux manual

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

2011-09-09
SIGEVENT(7) Linux Programmer's Manual SIGEVENT(7)

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/ に書かれている。
GNU 2011-09-09 SIGEVENT(7)
sigevent(7).txt (日本語 / Japanese)
Index English version of sigevent(7)
Go top