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/ に書かれている。

関連キーワード

通知   notify   構造体   sigev   シグナル   notification   signo   thread   スレッド   signal   union   sigval   イベント   セーフ   sigevent   非同期   passed   sival   Notification   attributes   タイマー   一部   ハンドラー   起動   attr

Linux マニュアル 一覧

関連するコマンド・関数

mq_notify.2   mq_notify.3   mq_close.3   sigqueue.3   bsd_signal.3   sysv_signal.3
 

Index

名前
書式
説明
関連項目
この文書について

This document was created by man2html, using the manual pages.
Time: 04:38:51 GMT, October 11, 2026