Provided by: manpages-ru-dev_4.27.0-1_all bug

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

       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 или
       более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

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

Справочные страницы Linux 6.9.1                   2 мая 2024 г.                                    sigsuspend(2)