.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (C) 2001 Andries Brouwer . .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" FIXME . There are a lot of other process termination actions that .\" could be listed on this page. See, for example, the list in the .\" POSIX exit(3p) page. .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH exit 3 "2 мая 2024 г." "Справочные страницы Linux 6.9.1" .SH НАИМЕНОВАНИЕ exit \- вызывает нормальное завершение процесса .SH БИБЛИОТЕКА Стандартная библиотека языка C (\fIlibc\fP, \fI\-lc\fP) .SH ОБЗОР .nf \fB#include \fP .P \fB[[noreturn]] void exit(int \fP\fIstatus\fP\fB);\fP .fi .SH ОПИСАНИЕ Функция \fBexit\fP() вызывает нормальное завершение процесса, и младший значащий байт \fIstatus\fP (то есть, \fIstatus & 0xFF\fP) возвращается родительскому процессу (см. \fBwait\fP(2)). .P Вызываются все функции, зарегистрированные с помощью \fBatexit\fP(3) и \fBon_exit\fP(3), в обратном по отношению к регистрации порядке (в этих функциях возможно использовать \fBatexit\fP(3) или \fBon_exit\fP(3) для регистрации дополнительной функции, которая будет также вызвана при выходе; при этом она добавляется в начало списка функций, которые осталось вызвать). Если из одной из функций не происходит возврат (например, она вызывает \fB_exit\fP(2) или завершает себя по сигналу), то оставшиеся функции не вызываются, и дальнейший процесс выхода прекращается (в частности, запись потоков \fBstdio\fP(3)). Если функция зарегистрирована с помощью \fBatexit\fP(3) или \fBon_exit\fP(3) несколько раз, то она вызывается столько раз, сколько зарегистрирована. .P Все открытые потоки \fBstdio\fP(3) записываются и закрываются. Файлы, созданные \fBtmpfile\fP(3), удаляются. .P В стандарте Си определены две константы, \fBEXIT_SUCCESS\fP и \fBEXIT_FAILURE\fP, которые можно передавать \fBexit\fP() для указания корректности или некорректности завершения, соответственно. .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" Функция \fBexit\fP() не возвращает выполнение. .SH АТРИБУТЫ Описание терминов данного раздела смотрите в \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Интерфейс Атрибут Значение T{ .na .nh \fBexit\fP() T} Безвредность в нитях MT\-Unsafe race:exit .TE .P Функция \fBexit\fP() использует глобальную незащищённую переменную, поэтому функцию нельзя использовать в нескольких нитях одновременно. .SH СТАНДАРТЫ C11, POSIX.1\-2008. .SH ИСТОРИЯ C89, POSIX.1\-2001, SVr4, 4.3BSD. .SH ПРИМЕЧАНИЯ Поведение не определено, если одна из функций, зарегистрированных с помощью \fBatexit\fP(3) и \fBon_exit\fP(3), вызовет \fBexit\fP() или \fBlongjmp\fP(3). Заметим, что вызов \fBexecve\fP(2) удаляет регистрацию функций, сделанную с помощью \fBatexit\fP(3) и \fBon_exit\fP(3). .P Использование \fBEXIT_SUCCESS\fP и \fBEXIT_FAILURE\fP является более переносимым методом (в не\-UNIX окружения), чем указание 0 и какого\-то ненулевого значения (например, 1 или \-1). В частности, в VMS используется другое соглашение. .P В BSD пытались стандартизовать коды завершения (которые также были взяты и другие библиотеки Си, например GNU C); смотрите файл \fI\fP. .P После \fBexit\fP() код выхода должен быть передан родительскому процессу. Есть три варианта: .IP \[bu] 3 Если родитель установил обработчик \fBSA_NOCLDWAIT\fP или \fBSIGCHLD\fP равным \fBSIG_IGN\fP, то код выхода отбрасывается и потомок завершается сразу. .IP \[bu] Если родитель ожидает завершения потомка, то он получает код выхода и потомок сразу завершается. .IP \[bu] Иначе потомок становится процессом «зомби»: большинство ресурсов процесс задействуется вторично, но слот с минимумом информации о процессе\-потомке (код завершения, статистика по использованию ресурсов) остаётся в таблице процессов. Это позволяет родителю в дальнейшем использовать \fBwaitpid\fP(2) (или подобный) для получения кода завершения потомка; после этого слот под процесс\-зомби освобождается. .P .\" Если в реализации поддерживается сигнал \fBSIGCHLD\fP, то он посылается родителю. Если родитель установил флаг \fBSA_NOCLDWAIT\fP, то поведение при сигнале \fBSIGCHLD\fP не определено. .SS "Сигналы, посылаемые другим процессам" Если существующий процесс является лидером сеанса и управляющим терминала сеанса, то каждому процессу из группы фонового режима этого управляющего терминала посылается сигнал \fBSIGHUP\fP, и терминал отключается от сеанса, чтобы его можно было захватить новому управляющему процессу. .P Если завершение процесса приводит к осиротению группы процессов, и если любой член только что осиротевшей группы останавливается, то каждому процессу этой группы после сигнала \fBSIGHUP\fP будет послан сигнал \fBSIGCONT\fP. Описание процесса осиротения группы смотрите в \fBsetpgid\fP(2). .P За исключением описанные выше случаев, когда процессы, куда посылается сигнал, могут быть потомками завершающегося процесса, завершение процесса, обычно, \fIне\fP приводит к отправке сигнала потомкам этого процесса. Однако, процесс может вызвать \fBprctl\fP(2) с операцией \fBPR_SET_PDEATHSIG\fP, чтобы подготовиться к получению сигнала, если его родитель завершает работу. .SH "СМОТРИТЕ ТАКЖЕ" \fB_exit\fP(2), \fBget_robust_list\fP(2), \fBsetpgid\fP(2), \fBwait\fP(2), \fBatexit\fP(3), \fBon_exit\fP(3), \fBtmpfile\fP(3) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства разработал(и) Azamat Hackimov , Yuri Kozlov , Иван Павлов и Kirill Rekhov . .PP Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, .UR https://www.gnu.org/licenses/gpl-3.0.html .UE версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ. .PP Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу .MT списка рассылки русских переводчиков .ME .