Ожидание сигнала
#include <signal.h>int sigpause( int sig );
libc
Функция sigpause() присваивает sig маске замаскированных сигналов, а затем ожидает прихода сигнала; по возвращении из функции набор маскированных сигналов восстанавливается. Аргумент sig обычно равен 0
, чтобы указать, что все сигналы должны быть разблокированы. Эта функция всегда завершается прерыванием выполнения с возвратом -1
и установкой errno в EINTR
.
При обычном использовании сигнал блокируется при помощи sigblock(). Чтобы начать критическую секцию, переменные, измененные при появлении сигнала, проверяются, чтобы определить, что нет никакой работы, которую нужно выполнить, и процесс приостанавливается в ожидании работы при помощи sigpause() с маской, возвращаемой sigblock() .
Невозможно заблокировать SIGKILL
, SIGSTOP
и SIGCONT
– это системное ограничение.
-1
; errno устанавливается в значение EINTR
.
POSIX 1003.1 X/Open Systems Interfaces Extension
Использование этих интерфейсов с системными библиотеками или в многопоточных приложениях не поддерживается.
kill(), sigaction(), sigblock(), sigmask(), signal(), sigsetmask(), sigsuspend(), sigunblock()
Предыдущий раздел: Описание API системной библиотеки