table of contents
_EXIT(2) | Руководство программиста Linux | _EXIT(2) |
ИМЯ¶
_exit, _Exit - завершает вызывающий процесс
СИНТАКСИС¶
#include <unistd.h>
void _exit(int status);
#include <stdlib.h>
void _Exit(int status);
Требования
макроса
тестирования
свойств
для glibc (см.
feature_test_macros(7)):
_Exit():
ОПИСАНИЕ¶
Функция _exit() «безотлагательно» завершает вызывающий процесс. Все открытые дескрипторы файлов, принадлежащие процессу, закрываются. Все его дочерние процессы наследуются init(1) (или ближайшим «собирающим» процессом, определённым вызовом prctl(2) с операцией PR_SET_CHILD_SUBREAPER).Родительскому процессу посылается сигнал SIGCHLD.
Значение status & 0377 возвращается родительскому процессу как код завершаемого процесса; он может быть получен с помощью одной из функций семейства wait(2).
Функция _Exit() эквивалентна _exit().
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ¶
Эти функции не выполняют возврат.
СООТВЕТСТВИЕ СТАНДАРТАМ¶
POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD. Функция _Exit() была представлена в C99.
ЗАМЕЧАНИЯ¶
Обсуждение эффектов при завершении работы, передачу кода выхода, зомби-процессы, сигналы и т. п., смотрите в exit(3).
Функция _exit() подобна exit(3), но не вызывает никаких функций, зарегистрированных с помощью atexit(3) или on_exit(3). Открытые потоки посредством stdio(3) не сбрасываются. С другой стороны, _exit() закрывает открытые дескрипторы файлов, а это может привести к неопределенной задержке, так как происходит ожидание завершения вывода данных. Если задержка нежелательна, то может быть полезным перед вызовом _exit() вызывать функцию типа tcflush(3). Будет ли отмена ожидания ввод-вывода, а также какие именно ожидающие операции ввода-вывода будут завершены при вызове _exit, зависит от реализации.
Отличия между библиотекой C и ядром¶
В 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)
ЗАМЕЧАНИЯ¶
Эта страница является частью проекта Linux man-pages версии 4.16. Описание проекта, информацию об ошибках и последнюю версию этой страницы можно найти по адресу https://www.kernel.org/doc/man-pages/.
ПЕРЕВОД¶
Русский перевод этой страницы руководства был сделан Yuri Kozlov <yuray@komyakino.ru>
Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.
Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks@lists.sourceforge.net.
3 мая 2017 г. | Linux |