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

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

       exit - вызывает нормальное завершение процесса

БИБЛИОТЕКА

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

ОБЗОР

       #include <stdlib.h>

       [[noreturn]] void exit(int status);

ОПИСАНИЕ

       Функция exit() вызывает нормальное завершение процесса, и младший значащий байт status (то есть, status &
       0xFF) возвращается родительскому процессу (см. wait(2)).

       Вызываются  все  функции,  зарегистрированные с помощью atexit(3) и on_exit(3), в обратном по отношению к
       регистрации порядке (в этих функциях возможно  использовать  atexit(3)  или  on_exit(3)  для  регистрации
       дополнительной  функции, которая будет также вызвана при выходе; при этом она добавляется в начало списка
       функций, которые осталось вызвать). Если из  одной  из  функций  не  происходит  возврат  (например,  она
       вызывает  _exit(2)  или  завершает  себя  по  сигналу), то оставшиеся функции не вызываются, и дальнейший
       процесс выхода прекращается (в частности, запись  потоков  stdio(3)).  Если  функция  зарегистрирована  с
       помощью atexit(3) или on_exit(3) несколько раз, то она вызывается столько раз, сколько зарегистрирована.

       Все открытые потоки stdio(3) записываются и закрываются. Файлы, созданные tmpfile(3), удаляются.

       В стандарте Си определены две константы, EXIT_SUCCESS и EXIT_FAILURE, которые можно передавать exit() для
       указания корректности или некорректности завершения, соответственно.

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

       Функция exit() не возвращает выполнение.

АТРИБУТЫ

       Описание терминов данного раздела смотрите в attributes(7).
       ┌──────────────────────────────────────────────────────────┬──────────────────────┬─────────────────────┐
       │ ИнтерфейсАтрибутЗначение            │
       ├──────────────────────────────────────────────────────────┼──────────────────────┼─────────────────────┤
       │ exit()                                                   │ Безвредность в нитях │ MT-Unsafe race:exit │
       └──────────────────────────────────────────────────────────┴──────────────────────┴─────────────────────┘

       Функция  exit()  использует  глобальную  незащищённую  переменную,  поэтому функцию нельзя использовать в
       нескольких нитях одновременно.

СТАНДАРТЫ

       C11, POSIX.1-2008.

ИСТОРИЯ

       C89, POSIX.1-2001, SVr4, 4.3BSD.

ПРИМЕЧАНИЯ

       Поведение не определено, если одна из функций,  зарегистрированных  с  помощью  atexit(3)  и  on_exit(3),
       вызовет  exit()  или  longjmp(3).  Заметим,  что вызов execve(2) удаляет регистрацию функций, сделанную с
       помощью atexit(3) и on_exit(3).

       Использование EXIT_SUCCESS и EXIT_FAILURE является более переносимым методом (в не-UNIX  окружения),  чем
       указание  0  и какого-то ненулевого значения (например, 1 или -1). В частности, в VMS используется другое
       соглашение.

       В BSD пытались стандартизовать коды завершения (которые также были взяты и другие библиотеки Си, например
       GNU C); смотрите файл <sysexits.h>.

       После exit() код выхода должен быть передан родительскому процессу. Есть три варианта:

       •  Если  родитель  установил  обработчик  SA_NOCLDWAIT  или  SIGCHLD  равным  SIG_IGN,  то   код   выхода
          отбрасывается и потомок завершается сразу.

       •  Если родитель ожидает завершения потомка, то он получает код выхода и потомок сразу завершается.

       •  Иначе  потомок  становится  процессом «зомби»: большинство ресурсов процесс задействуется вторично, но
          слот с минимумом информации о процессе-потомке (код завершения, статистика по использованию  ресурсов)
          остаётся  в  таблице  процессов.  Это  позволяет  родителю  в  дальнейшем использовать waitpid(2) (или
          подобный) для получения кода завершения потомка; после этого слот под процесс-зомби освобождается.

       Если в реализации поддерживается сигнал SIGCHLD, то он посылается родителю. Если родитель установил  флаг
       SA_NOCLDWAIT, то поведение при сигнале SIGCHLD не определено.

   Сигналы, посылаемые другим процессам
       Если  существующий процесс является лидером сеанса и управляющим терминала сеанса, то каждому процессу из
       группы фонового режима этого управляющего терминала посылается сигнал SIGHUP, и терминал  отключается  от
       сеанса, чтобы его можно было захватить новому управляющему процессу.

       Если завершение процесса приводит к осиротению группы процессов, и если любой член только что осиротевшей
       группы останавливается, то каждому процессу этой группы после сигнала SIGHUP будет послан сигнал SIGCONT.
       Описание процесса осиротения группы смотрите в setpgid(2).

       За  исключением  описанные  выше  случаев,  когда  процессы, куда посылается сигнал, могут быть потомками
       завершающегося процесса, завершение процесса, обычно, не  приводит  к  отправке  сигнала  потомкам  этого
       процесса.  Однако,  процесс  может  вызвать  prctl(2) с операцией PR_SET_PDEATHSIG, чтобы подготовиться к
       получению сигнала, если его родитель завершает работу.

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

       _exit(2), get_robust_list(2), setpgid(2), wait(2), atexit(3), on_exit(3), tmpfile(3)

ПЕРЕВОД

       Русский перевод этой страницы руководства разработал(и) Azamat Hackimov <azamat.hackimov@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 г.                                          exit(3)