Provided by: manpages-ru_4.21.0-2_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
       или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

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

Linux man-pages 6.03                           30 октября 2022 г.                                    sigevent(7)