Man page - rt_sigsuspend(2)

Packages contains this manual

Available languages:

en fr ja ru ro de

Manual

sigsuspend

НАИМЕНОВАНИЕ
БИБЛИОТЕКА
ОБЗОР
ОПИСАНИЕ
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
ОШИБКИ
СТАНДАРТЫ
ИСТОРИЯ
Отличия между библиотекой C и ядром
ПРИМЕЧАНИЯ
СМОТРИТЕ ТАКЖЕ
ПЕРЕВОД

НАИМЕНОВАНИЕ

sigsuspend, rt_sigsuspend - ожидание сигнала

БИБЛИОТЕКА

Стандартная библиотека языка C ( libc , -lc )

ОБЗОР

#include <signal.h>

int sigsuspend(const sigset_t * mask );

Требования макроса тестирования свойств для glibc (см. feature_test_macros (7)):

sigsuspend ():
_POSIX_C_SOURCE

ОПИСАНИЕ

Вызов sigsuspend () временно заменяет маску сигналов вызывающей нити маской, указанной в mask , и затем приостанавливает нить до тех пор, пока не поступит сигнал, для которого запустится обработчик сигнала или это приведёт к завершению процесса.

Если по сигналу процесс завершается, то вызов sigsuspend () не возвращает управление обратно в программу. Если сигнал пойман, то возврат из sigsuspend () произойдёт после завершения выполнения обработчика, и маска сигналов восстановится в значение, которое было до вызова sigsuspend ().

Сигналы SIGKILL и SIGSTOP невозможно заблокировать; указание этих этих сигналов в mask не влияет на маску сигналов нити.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

Вызов sigsuspend () всегда возвращает -1; errno присваивается номер ошибки (обычно EINTR ).

ОШИБКИ

EFAULT

Аргумент mask указывает на память в недопустимой части адресного пространства процесса.

EINTR

Вызов был прерван по сигналу; смотрите signal (7).

СТАНДАРТЫ

POSIX.1-2008.

ИСТОРИЯ

POSIX.1-2001.

Отличия между библиотекой C и ядром

Первоначально, системный вызов Linux назывался sigsuspend (). Однако, с добавлением сигналов реального времени в Linux 2.2, 32-битный аргумент sigset_t неизменяемого размера, поддерживаемый этим системным вызовом, не мог больше использоваться. В результате был добавлен новый системный вызов rt_sigsuspend () с увеличенным типом sigset_t . У нового системного вызова появился второй аргумент, size_t sigsetsize , в котором указывается размер (в байтах) набора сигналов mask . В настоящее время значение этого аргумента должно быть равно sizeof(sigset_t) (иначе возникает ошибка EINVAL ). Обёрточная функция glibc sigsuspend () скрывает это и вызывает rt_sigsuspend (), если он есть в ядре.

ПРИМЕЧАНИЯ

Обычно, sigsuspend () используется вместе с sigprocmask (2), чтобы предотвратить доставку сигнала при выполнении критического участка кода. Сначала вызывающий блокирует сигналы с помощью sigprocmask (2). Когда критический участок выполнен, вызывающий начинает ждать сигналов с помощью вызова sigsuspend (), указав маску, значение которой было возвращено вызовом sigprocmask (2) (в аргументе oldset ).

Подробная информация о работе с наборами сигналов есть на странице sigsetops (3).

СМОТРИТЕ ТАКЖЕ

kill (2), pause (2), sigaction (2), signal (2), sigprocmask (2), sigwaitinfo (2), sigsetops (3), sigwait (3), signal (7)

ПЕРЕВОД

Русский перевод этой страницы руководства разработал(и) Alexander Golubev <fatzer2@gmail.com>, Azamat Hackimov <azamat.hackimov@gmail.com>, Hotellook, Nikita <zxcvbnm3230@mail.ru>, Spiros Georgaras <sng@hellug.gr>, Vladislav <ivladislavefimov@gmail.com>, Yuri Kozlov <yuray@komyakino.ru>, Иван Павлов <pavia00@gmail.com> и Kirill Rekhov <krekhov.dev@gmail.com>

Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков .