sigwait()

Ожидать сигнал

Прототип:

#include <signal.h>
int sigwait( const sigset_t *set,
int *sig );

Аргументы:

set
Указатель на объект sigset_t, который определяет ожидаемые сигналы.
sig
Переменная, куда будет сохранен номер очищенного сигнала.

Библиотека:

libc

Описание:

Функция sigwait() определяет перечень ожидаемых сигналов set, автоматически очищает его из набора ожидающих сигналов процесса и возвращает его номер в sig. Если в очереди присутствует несколько ожидаемых сигналов, лишь первый из них приведет к разблокированию sigwait(), остальные останутся в очереди. Если сигналов, удовлетворяющих set, в очереди нет, поток блокируется до их появления.

Сигналы, определенные в set должны быть блокированы перед вызовом sigwait(); в противном случае поведение не определено. Эффект от sigwait() при обработке сигналов не указывается.

Если один или несколько потоков используют sigwait() для ожидания одного и того же сигнала, только один поток получит управление – какой именно неизвестно.

Возвращаемое значение:

0
Успешное завершение (один или несколько указанных сигналов поступили).
EINTR
Функция sigwait() прервана сигналом.
EINVAL
Аргумент set содержит некорректный или неподдерживаемый номер сигнала.
EFAULT
При доступе к буферу возникла ошибка.

Классификация:

POSIX 1003.1

Безопасность использования
Точка остановки потока
Да
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

pause(), pthread_sigmask(), sigaction(), sigpending(), sigsuspend()




Предыдущий раздел: Описание API системной библиотеки