Главная » 2017 » Ноябрь » 18 » man 7 sigevent
21:34
man 7 sigevent

SEO sprint - Всё для максимальной раскрутки!





ИМЯ


sigevent - структура для уведомления из асинхронных процедур



ОБЗОР


#include <signal.h>

union sigval { /* Данные, передаваемые с уведомлением */
int sival_int; /* целое */
void *sival_ptr; /* указатель */
};

struct sigevent {
int sigev_notify; /* метод уведомления */
int sigev_signo; /* сигнал уведомления */
union sigval sigev_value; /* данные, передаваемые
с уведомлением */
void (*sigev_notify_function) (union sigval);
/* функция, используемая для нити
notification (SIGEV_THREAD) */
void *sigev_notify_attributes;
/* атрибуты для уведомления нити
(SIGEV_THREAD) */
pid_t sigev_notify_thread_id;
/* ID нити для уведомления (SIGEV_THREAD_ID) */
};



ОПИСАНИЕ


Структура 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.

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



Категория: (7) Различные описания, соглашения и прочее | Просмотров: 775 | Добавил: Администратор | Рейтинг: 0.0/0
Всего комментариев: 0
avatar