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

_exit(2)                                       System Calls Manual                                      _exit(2)

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

       _exit, _Exit - завершает вызывающий процесс

БИБЛИОТЕКА

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

ОБЗОР

       #include <unistd.h>

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

       #include <stdlib.h>

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

   Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

       _Exit():
           _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L

ОПИСАНИЕ

       _exit()  «безотлагательно»  завершает  вызывающий процесс. Все открытые дескрипторы файлов, принадлежащие
       процессу, закрываются.  Все  его  дочерние  процессы  наследуются  init(1)  (или  ближайшим  «собирающим»
       процессом,  определённым  вызовом  prctl(2)  с  операцией  PR_SET_CHILD_SUBREAPER).Родительскому процессу
       посылается сигнал SIGCHLD.

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

       Функция _Exit() эквивалентна _exit().

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

       Эти функции не выполняют возврат.

СТАНДАРТЫ

       _exit()
              POSIX.1-2008.

       _Exit()
              C11, POSIX.1-2008.

ИСТОРИЯ

       POSIX.1-2001, SVr4, 4.3BSD.

       _Exit() была добавлена в стандарт C99.

ПРИМЕЧАНИЯ

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

       Функция _exit() подобна exit(3), но не вызывает никаких функций, зарегистрированных с  помощью  atexit(3)
       или on_exit(3). Открытые потоки посредством stdio(3) не сбрасываются. С другой стороны, _exit() закрывает
       открытые  дескрипторы файлов, а это может привести к неопределенной задержке, так как происходит ожидание
       завершения вывода данных. Если задержка нежелательна,  то  может  быть  полезным  перед  вызовом  _exit()
       вызывать  функцию  типа  tcflush(3). Будет ли отмена ожидания ввод-вывода, а также какие именно ожидающие
       операции ввода-вывода будут завершены при вызове _exit, зависит от реализации.

   Отличия между библиотекой C и ядром
       Текст выше в разделе DESCRIPTION описывает традиционный эффект _exit(), который заключается в  завершении
       процесса,  и  это  семантика,  определенная  POSIX.1  и  реализованная  библиотечной  оберткой  на  C. На
       современных системах это означает завершение всех потоков в процессе.

       В отличие от функции-оболочки библиотеки C, системный вызов _exit() в Linux завершает  только  вызывающий
       поток,  и  такие  действия,  как смена родителя для дочерних процессов или отправка SIGCHLD родительскому
       процессу, выполняются только если это последний поток в группе потоков.

       До glibc 2.3 функция-обертка _exit() вызывала системный вызов ядра с таким же  именем.  Начиная  с  glibc
       2.3, функция-обертка вызывает exit_group(2), чтобы завершить все нити процесса.

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

       execve(2),   exit_group(2),   fork(2),   kill(2),  wait(2),  wait4(2),  waitpid(2),  atexit(3),  exit(3),
       on_exit(3), termios(3)

ПЕРЕВОД

       Русский перевод этой страницы руководства разработал(и) Yuri Kozlov <yuray@komyakino.ru> и 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(2)