table of contents
SIGPROCMASK(2) | Руководство программиста Linux | SIGPROCMASK(2) |
ИМЯ¶
sigprocmask - проверяет и изменяет блокировку сигналов
ОБЗОР¶
#include <signal.h>
int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);
Требования
макроса
тестирования
свойств
для glibc (см.
feature_test_macros(7)):
sigprocmask(): _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _POSIX_SOURCE
ОПИСАНИЕ¶
Вызов sigprocmask() используется для выборки и/или изменения маски сигналов вызывающей нити. Маска сигналов представляет собой набор сигналов, чья доставка в настоящее время заблокирована вызывающим (подробнее об этом смотрите также в signal(7)).
Работа вызова зависит от значения how:
- SIG_BLOCK
- Набор блокируемых сигналов — объединение текущего набора и аргумента set.
- SIG_UNBLOCK
- Сигналы в set удаляются из списка блокируемых сигналов. Допускается разблокировать незаблокированные сигналы.
- SIG_SETMASK
- Набор блокируемых сигналов приравнивается к аргументу set.
Если значение oldset не равно NULL, то предыдущее значение маски сигналов записывается в oldset.
Если значение set равно NULL, то маска сигналов не изменяется (т.е., значение how игнорируется), но текущее значение маски сигналов всё же возвращается в oldset (если его значение не равно NULL).
Использование sigprocmask() в многотивых процессах не определено; смотрите pthread_sigmask(3).
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ¶
При успешном выполнении вызова sigprocmask() возвращается 0 и -1 при ошибке.
ОШИБКИ¶
СООТВЕТСТВИЕ СТАНДАРТАМ¶
POSIX.1-2001.
ЗАМЕЧАНИЯ¶
Невозможно заблокировать SIGKILL или SIGSTOP. Попытка выполнить это просто игнорируется.
Каждая нить процесса имеют свою маску сигналов.
Потомок, создаваемый с помощью fork(2), наследует копию родительской маски сигналов; маска сигналов сохраняется при вызове execve(2).
Если генерируется сигнал SIGBUS, SIGFPE, SIGILL или SIGSEGV, а он заблокирован, то результат не определён, если сигнал был сгенерирован не из kill(3), sigqueue(3) или raise(3).
Подробная информация о работе с наборами сигналов есть на странице sigsetops(3).
СМОТРИТЕ ТАКЖЕ¶
kill(2), pause(2), sigaction(2), signal(2), sigpending(2), sigsuspend(2), pthread_sigmask(3), sigqueue(3), sigsetops(3), signal(7)
2012-04-15 | Linux |