.\" -*- coding: UTF-8 -*- .\" Copyright 2008-2014, Michael Kerrisk .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH sigreturn 2 "8 февраля 2026 г." "Linux man\-pages 6.18" .SH НАИМЕНОВАНИЕ sigreturn, rt_sigreturn \- выполняет возврат из обработчика сигнала и очищает кадр стека .SH БИБЛИОТЕКА Стандартная библиотека языка C (\fIlibc\fP,\ \fI\-lc\fP) .SH СИНТАКСИС .nf \fBint sigreturn(...);\fP .fi .SH ОПИСАНИЕ .\" See arch/x86/kernel/signal.c::__setup_frame() [in Linux 3.17 source code] Если ядро Linux обнаруживает, что неблокированный сигнал ожидает обработки процессом, то при следующем переключении в пользовательский режим в этом процессе (например, при возврате из системного вызова или когда процесс перепланируется на ЦП), оно создаёт новый кадр в стеке пользовательского пространства, где сохраняет различные части контекста процесса (состояние слова процессора, регистры, маску сигналов и настройки стека сигналов). .P Также ядро делает так, что при переходе в пользовательский режим вызывается обработчик сигналов и при возврате из обработчика управление передаётся части кода пользовательского пространства, называемого «сигнальным батутом»(signal trampoline). Код сигнального батута, в свою очередь, вызывает \fBsigreturn\fP(). .P This \fBsigreturn\fP() call undoes everything that was done\[em]changing the process's signal mask, switching signal stacks (see \fBsigaltstack\fP(2))\[em]in order to invoke the signal handler. Using the information that was earlier saved on the user\-space stack \fBsigreturn\fP() restores the process's signal mask, switches stacks, and restores the process's context (processor flags and registers, including the stack pointer and instruction pointer), so that the process resumes execution at the point where it was interrupted by the signal. .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" Вызов \fBsigreturn\fP() не возвращает значений. .SH ВЕРСИИ Во многих системах UNIX есть системный вызов \fBsigreturn\fP() или его эквивалент. Однако этот вызов отсутствует в POSIX, и в разных системах он работает по\-разному. .SH СТАНДАРТЫ Отсутствуют. .SH ПРИМЕЧАНИЯ .\" See sysdeps/unix/sysv/linux/sigreturn.c and .\" signal/sigreturn.c in the glibc source Вызов \fBsigreturn\fP() существует только для реализации обработчиков сигналов. \fBНикогда\fP не вызывайте его напрямую (на самом деле, простая обёртка \fBsigreturn\fP() в библиотеке GNU C просто вернёт \-1 и присвоит \fIerrno\fP значение \fBENOSYS\fP). Содержимое аргументов (если есть), передаваемое \fBsigreturn\fP(), для каждой архитектуры своё (на некоторых архитектурах, например x86\-64, у \fBsigreturn\fP() нет аргументов, так как вся требуемая информация доступна из кадра стека, который был создан ядром ранее в стеке пользовательского пространства). .P .\" See, for example, sysdeps/unix/sysv/linux/i386/sigaction.c and .\" sysdeps/unix/sysv/linux/x86_64/sigaction.c in the glibc (2.20) source. Когда\-то системы UNIX помещали код сигнального перехода в пользовательский стек. В настоящее время страницы пользовательского стека защищены и в них невозможно выполнить код. Поэтому в современных системах Linux, в зависимости от архитектуры, код хранится в \fBvdso\fP(7) или в библиотеке C. В последнем случае обёрточная функция \fBsigaction\fP(2) библиотеки C информирует ядро о расположении кода помещая его адрес в поле \fIsa_restorer\fP структуры \fIsigaction\fP и устанавливает флаг \fBSA_RESTORER\fP в поле \fIsa_flags\fP. .P Сохранённая информация контекста процесса помещается в структуру \fIucontext_t\fP (смотрите \fI\fP). Эта структура видима внутри обработчика сигнала как третий аргумент обработчика, установленного \fBsigaction\fP(2) с флагом \fBSA_SIGINFO\fP. .P .\" В некоторых других системах UNIX работа сигнального батута несколько отличается. В частности, в некоторых системах при переходе в пользовательский режим ядро передаёт управление батуту (а не обработчику сигнала) и код батута вызывает обработчик сигнала (и затем вызывает \fBsigreturn\fP() после завершения работы обработчика). .SS "Отличия между библиотекой C и ядром" .\" Первоначальное название системного вызова в Linux было \fBsigreturn\fP(). Однако с добавлением сигналов реального времени в Linux 2.2 для поддержки увеличенного типа \fIsigset_t\fP был добавлен новый системный вызов \fBrt_sigreturn\fP(). Библиотека GNU C скрывает это от нас, прозрачно используя \fBrt_sigreturn\fP(), если он есть в ядре. .SH "СМОТРИТЕ ТАКЖЕ" \fBkill\fP(2), \fBrestart_syscall\fP(2), \fBsigaltstack\fP(2), \fBsignal\fP(2), \fBgetcontext\fP(3), \fBsignal\fP(7), \fBvdso\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 debian-l10n-russian@lists.debian.org списка рассылки русских переводчиков .ME .