sigpending(2)
| SIGPENDING(2) | Руководство программиста Linux | SIGPENDING(2) |
ИМЯ
sigpending, rt_sigpending - проверка ожидающих сигналов
ОБЗОР
#include <signal.h>
int sigpending(sigset_t *set);
Требования
макроса
тестирования
свойств
для glibc (см.
feature_test_macros(7)):
sigpending(): _POSIX_C_SOURCE
ОПИСАНИЕ
Вызов sigpending() возвращает набор сигналов, которые ожидают доставки в вызвавшую нить (т.е., сигналы, возникшие пока были заблокированы). Маска ожидающих сигналов возвращается в set.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном выполнении функция sigpending() возвращает 0 и -1 при ошибке. В случае ошибки в errno указывается номер ошибки.
ОШИБКИ
- EFAULT
- Аргумент set указывает на память в недопустимой части адресуемого пространства.
СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008.
ЗАМЕЧАНИЯ
Подробная информация о работе с наборами сигналов есть на странице sigsetops(3).
Если сигнал заблокирован и имеет обработчик «игнорировать», то он не добавляется в маску ожидающих сигналов при генерации.
Набор сигналов, ожидающих обработки в нити, представляет собой объединение набора сигналов, ожидающих обработки в этой нити и набора сигналов, ожидающих обработки всем процессом (см. signal(7)).
Потомок, созданный с помощью fork(2), первоначально имеет пустой набор ожидающих сигналов; набор ожидающих сигналов сохраняется при вызове execve(2).
Отличия между библиотекой C и ядром
Первоначально, системный вызов Linux назывался sigpending(). Однако, с добавлением сигналов реального времени в Linux 2.2, 32-битный аргумент sigset_t неизменяемого размера, поддерживаемый этим системным вызовом, не мог больше использоваться. В результате был добавлен новый системный вызов rt_sigpending() с увеличенным типом sigset_t. У нового системного вызова появился второй аргумент, size_t sigsetsize, в котором указывается размер (в байтах) набора сигналов set. Обёрточная функция glibc sigpending() скрывает это и вызывает rt_sigpending(), если он есть в ядре.
ДЕФЕКТЫ
В версиях glibc до 2.2.1 включительно, был дефект в обёрточной функции к sigpending(), из-за которого возвращалась некорректная информация об ожидающих сигналах реального времени.
СМОТРИТЕ ТАКЖЕ
kill(2), sigaction(2), signal(2), sigprocmask(2), sigsuspend(2), sigsetops(3), signal(7)
| 2017-09-15 | Linux |
