Man page - exit(2)

Packages contains this manual

Available languages:

en fr pt_BR pl cs ja ru ro de

Manual

_exit

НАИМЕНОВАНИЕ
БИБЛИОТЕКА
ОБЗОР
ОПИСАНИЕ
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
СТАНДАРТЫ
ИСТОРИЯ
ПРИМЕЧАНИЯ
Отличия между библиотекой C и ядром
СМОТРИТЕ ТАКЖЕ
ПЕРЕВОД

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

_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 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

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