.\" -*- coding: UTF-8 -*- .\" Copyright (c) 2005 Michael Kerrisk .\" based on earlier work by faith@cs.unc.edu and .\" Mike Battersby .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" 2005-09-15, mtk, Created new page by splitting off from sigaction.2 .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH sigsuspend 2 "2 мая 2024 г." "Справочные страницы Linux 6.9.1" .SH ИМЯ sigsuspend, rt_sigsuspend \- ожидание сигнала .SH БИБЛИОТЕКА Стандартная библиотека языка C (\fIlibc\fP, \fI\-lc\fP) .SH СИНТАКСИС .nf \fB#include \fP .P \fBint sigsuspend(const sigset_t *\fP\fImask\fP\fB);\fP .fi .P .RS -4 Требования макроса тестирования свойств для glibc (см. \fBfeature_test_macros\fP(7)): .RE .P \fBsigsuspend\fP(): .nf _POSIX_C_SOURCE .fi .SH ОПИСАНИЕ Вызов \fBsigsuspend\fP() временно заменяет маску сигналов вызывающей нити маской, указанной в \fImask\fP, и затем приостанавливает нить до тех пор, пока не поступит сигнал, для которого запустится обработчик сигнала или это приведёт к завершению процесса. .P Если по сигналу процесс завершается, то вызов \fBsigsuspend\fP() не возвращает управление обратно в программу. Если сигнал пойман, то возврат из \fBsigsuspend\fP() произойдёт после завершения выполнения обработчика, и маска сигналов восстановится в значение, которое было до вызова \fBsigsuspend\fP(). .P Сигналы \fBSIGKILL\fP и \fBSIGSTOP\fP невозможно заблокировать; указание этих этих сигналов в \fImask\fP не влияет на маску сигналов нити. .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" Вызов \fBsigsuspend\fP() всегда возвращает \-1; \fIerrno\fP присваивается номер ошибки (обычно \fBEINTR\fP). .SH ОШИБКИ .TP \fBEFAULT\fP Аргумент \fImask\fP указывает на память в недопустимой части адресного пространства процесса. .TP \fBEINTR\fP Вызов был прерван по сигналу; смотрите \fBsignal\fP(7). .SH СТАНДАРТЫ POSIX.1\-2008. .SH ИСТОРИЯ POSIX.1\-2001. .SS "Отличия между библиотекой C и ядром" .\" Первоначально, системный вызов Linux назывался \fBsigsuspend\fP(). Однако, с добавлением сигналов реального времени в Linux 2.2, 32\-битный аргумент \fIsigset_t\fP неизменяемого размера, поддерживаемый этим системным вызовом, не мог больше использоваться. В результате был добавлен новый системный вызов \fBrt_sigsuspend\fP() с увеличенным типом \fIsigset_t\fP. У нового системного вызова появился второй аргумент, \fIsize_t sigsetsize\fP, в котором указывается размер (в байтах) набора сигналов \fImask\fP. В настоящее время значение этого аргумента должно быть равно \fIsizeof(sigset_t)\fP (иначе возникает ошибка \fBEINVAL\fP). Обёрточная функция glibc \fBsigsuspend\fP() скрывает это и вызывает \fBrt_sigsuspend\fP(), если он есть в ядре. .SH ПРИМЕЧАНИЯ Обычно, \fBsigsuspend\fP() используется вместе с \fBsigprocmask\fP(2), чтобы предотвратить доставку сигнала при выполнении критического участка кода. Сначала вызывающий блокирует сигналы с помощью \fBsigprocmask\fP(2). Когда критический участок выполнен, вызывающий начинает ждать сигналов с помощью вызова \fBsigsuspend\fP(), указав маску, значение которой было возвращено вызовом \fBsigprocmask\fP(2) (в аргументе \fIoldset\fP). .P Подробная информация о работе с наборами сигналов есть на странице \fBsigsetops\fP(3). .SH "СМОТРИТЕ ТАКЖЕ" \fBkill\fP(2), \fBpause\fP(2), \fBsigaction\fP(2), \fBsignal\fP(2), \fBsigprocmask\fP(2), \fBsigwaitinfo\fP(2), \fBsigsetops\fP(3), \fBsigwait\fP(3), \fBsignal\fP(7) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства разработал(и) Alexander Golubev , Azamat Hackimov , Hotellook, Nikita , Spiros Georgaras , Vladislav , Yuri Kozlov и Иван Павлов . .PP Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, .UR https://www.gnu.org/licenses/gpl-3.0.html .UE версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ. .PP Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу .MT списка рассылки русских переводчиков .ME .