Provided by: manpages-ru_4.19.0-7_all bug

ИМЯ

       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 используется в различных программных интерфейсах для описания способа,
       которым нужно уведомлять процесс о  событии  (например,  окончание  асинхронного  запроса,
       истечение таймера или поступление сообщения).

       Определение,  приведённое  в  ОБЗОРЕ,  приблизительно: некоторые поля в структуре sigevent
       могут быть определены как часть объединения. Программы должны использовать только те поля,
       которые применимы к значению, заданном в sigev_notify.

       В поле sigev_notify задаётся как выполняется уведомление. Значением поля может быть:

       SIGEV_NONE
              «Пустое» уведомление: ничего не делать при возникновении события.

       SIGEV_SIGNAL
              Уведомить процесс, отправив сигнал, указанный в sigev_signo.

              Если   сигнал  пойман  обработчиком  сигнала,  который  зарегистрирован  с  помощью
              sigaction(2) с  флагом  SA_SIGINFO,  то  следующим  полям  назначаются  значения  в
              структуре siginfo_t, передаваемой во втором аргументе обработчика:

              si_code   В   этом   поле   задаётся  значение,  которое  зависит  от  программного
                        интерфейса, доставляющего уведомление.

              si_signo  В этом поле указывается номер сигнала (т. е.,  тоже  значение,  что  и  в
                        sigev_signo).

              si_value  В этом поле содержится значение, указанное в sigev_value.

              В  зависимости  от  программного  интерфейса  остальным полям в структуре 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)

ПЕРЕВОД

       Русский    перевод    этой    страницы    руководства   был   сделан   Alexander   Golubev
       <fatzer2@gmail.com>,  Azamat  Hackimov  <azamat.hackimov@gmail.com>,   Hotellook,   Nikita
       <zxcvbnm3230@mail.ru>,       Spiros       Georgaras       <sng@hellug.gr>,       Vladislav
       <ivladislavefimov@gmail.com>,   Yuri   Kozlov   <yuray@komyakino.ru>   и    Иван    Павлов
       <pavia00@gmail.com>

       Этот  перевод  является  бесплатной  документацией;  прочитайте  Стандартную  общественную
       лицензию GNU версии 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы
       узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если  вы  обнаружите  ошибки  в  переводе этой страницы руководства, пожалуйста, отправьте
       электронное письмо на ⟨man-pages-ru-talks@lists.sourceforge.net⟩.