sigpause - автоматически разблокирует сигналы и ждёт прерывания
sigpause(3)
автоматически разблокирует сигналы и ждёт прерывания
ОБЗОР
#include <signal.h>
int sigpause(int sigmask); /* BSD (но см.
ЗАМЕЧАНИЯ) */
int sigpause(int sig); /* System V / UNIX 95 */
ОПИСАНИЕ
Не используйте эту функцию. Вместо неё используйте
sigsuspend(2).
Функция sigpause() предназначена для ожидания какого-нибудь сигнала. Она
изменяет сигнальную маску процесса (набор блокируемых сигналов) и ждёт
появления сигнала. При прибытии сигнала первоначальная сигнальная маска
восстанавливается.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Если
sigpause() возвращает выполнение, то это означает, что она была
прервана сигналом и возвращается значение -1, а
errno присваивается
значение
EINTR.
АТРИБУТЫ
Описание терминов данного раздела смотрите в
attributes(7).
Интерфейс Атрибут Значение
sigpause()
безвредность в потоках: безвредно (MT-Safe)
СООТВЕТСТВИЕ СТАНДАРТАМ
Версия
sigpause() из System V стандартизована в POSIX.1-2001. Также она
есть в POSIX.1-2008, но помечена как устаревшая.
ЗАМЕЧАНИЯ
История
Классическая BSD-версия этой функции появилась в 4.2BSD. Она изменяет
сигнальную маску процесса на
sigmask. В UNIX 95 стандартизована
несовместимая с System V версия этой функции, которая удаляет сигнальной
маски процесса только указанный сигнал
sig. Проблемная ситуация двух
несовместимых функций с одним именем была исправлена функцией
sigsuspend(2), которая ожидает аргумент с типом
sigset_t * (вместо
int).
Замечания, касающиеся Linux
В Linux эта процедура является системным вызовом только на архитектуре Sparc
(sparc64).
В glibc используется версия BSD, если определён макрос тестирования свойств
_BSD_SOURCE и отсутствуют _POSIX_SOURCE, _POSIX_C_SOURCE,
_XOPEN_SOURCE, _GNU_SOURCE или _SVID_SOURCE. В противном случае
используется версия System V (и для получения объявления должен быть
определён _XOPEN_SOURCE). Начиная с glibc 2.19, в <signal.h>
представляет только версию System V; в приложениях, где используется
BSD-версия sigpause(), нужно заменить его на sigsuspend(2).