sigpause()

Ожидание сигнала

Прототип:

#include <signal.h>
int sigpause( int sig );

Аргументы:

sig
Маска, содержащая номер сигнала, которого требуется дождаться.

Библиотека:

libc

Описание:

Функция sigpause() присваивает sig маске замаскированных сигналов, а затем ожидает прихода сигнала; по возвращении из функции набор маскированных сигналов восстанавливается. Аргумент sig обычно равен 0, чтобы указать, что все сигналы должны быть разблокированы. Эта функция всегда завершается прерыванием выполнения с возвратом -1 и установкой errno в EINTR.

При обычном использовании сигнал блокируется при помощи sigblock(). Чтобы начать критическую секцию, переменные, измененные при появлении сигнала, проверяются, чтобы определить, что нет никакой работы, которую нужно выполнить, и процесс приостанавливается в ожидании работы при помощи sigpause() с маской, возвращаемой sigblock() .

Невозможно заблокировать SIGKILL, SIGSTOP и SIGCONT – это системное ограничение.

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

-1; errno устанавливается в значение EINTR.

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

POSIX 1003.1 XSI

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

Предостережения:

Использование этих интерфейсов с системными библиотеками или в многопоточных приложениях не поддерживается.

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

kill(), sigaction(), sigblock(), sigmask(), signal(), sigsetmask(), sigsuspend(), sigunblock()




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