sigpause -
автоматически
разблокирует
сигналы и
ждёт
прерывания
Standard C library (
libc,
-lc)
#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 эта
процедура
является
системным
вызовом
только на
архитектуре
Sparc (sparc64).
glibc uses the BSD version if the
_BSD_SOURCE feature test macro is
defined and none of
_POSIX_SOURCE,
_POSIX_C_SOURCE,
_XOPEN_SOURCE,
_GNU_SOURCE, or
_SVID_SOURCE is defined.
Otherwise, the System V version is used, and feature test macros must be
defined as follows to obtain the declaration:
- •
- Начиная
с glibc 2.26: _XOPEN_SOURCE >= 500
- •
- glibc 2.25 and earlier: _XOPEN_SOURCE
Начиная с glibc 2.19,
в
<signal.h>
представлена
только
версия System V; в
приложениях,
которые
использовали
BSD-версию
sigpause(),
нужно
заменить
его на
sigsuspend(2).
kill(2),
sigaction(2),
sigprocmask(2),
sigsuspend(2),
sigblock(3),
sigvec(3),
feature_test_macros(7)
Русский
перевод
этой
страницы
руководства
был сделан
Alexander Golubev <
[email protected]>, Azamat Hackimov
<
[email protected]>, Hotellook, Nikita
<
[email protected]>, Spiros Georgaras <
[email protected]>, Vladislav
<
[email protected]>, Yuri Kozlov <
[email protected]>
и Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]