ИМЯ¶
_exit,_Exit - завершает
текущий
процесс
ОБЗОР¶
#include <unistd.h>
void _exit(int status);
#include <stdlib.h>
void _Exit(int status);
ОПИСАНИЕ¶
Функция
_exit
"немедленно"
завершает
вызвавший её
процесс.
Любые
открытые
файловые
дескрипторы,
принадлежащие
данному
процессу,
закрываются;
любые
потомки
данного
процесса
наследуются
процессом init,
который
имеет
идентификатор
(номер) 1; а
родительскому
процессу,
посылается
сигнал
SIGCHLD.
Значение
status
возвращается
родительскому
процессу как
код
завершения
процесса, и
может быть
затем
получено при
помощи
вызова одной
из функций
семейства
wait.
Функция
_Exit
эквивалента
функции
_exit.
ВОЗВРАЩАЕМЫЕ
ЗНАЧЕНИЯ¶
Эти функции
ничего не
возвращают.
СООТВЕТСТВИЕ
СТАНДАРТАМ¶
SVr4, SVID, POSIX, X/OPEN, BSD 4.3.
Функция
_Exit()
была введена
по C99.
ЗАМЕЧАНИЯ¶
Информацию о
действиях,
выполняемых
exit, о передаче
кода
завершения,
о процессах
зомби и об
посылке
сигналов и
т.д. смотрите
в
exit(3).
Функция
_exit
похожа на
exit(),
но не
вызывает
никаких
зарегистрированных
функций как ANSI C
atexit и никаких
зарегистрированных
обработчиков
сигналов.
Эта функция
может
сбрасывать
стандартные
буферы
ввода/вывода
и в
зависимости
от
реализации
удалять
временные
файлы,
созданные
функцией
tmpfile(3). С другой
стороны
_exit
выполняет
закрытие
открытых
файловых
декскрипторов
и это может
вызывать
непонятную
задержку
из-за того,
что
происходит
ожидание
завершения
незаконченного
вывода. Если
такая
задержка
нежелательна,
то возможно
будет
полезным
использовать
вызов такой
функции как
tcflush() перед
вызовом
_exit().
Может ли
_exit()
отменять
операции
незаконеченного
ввода/вывода
и какие
именно
операции
незаконеченного
ввода/вывода
могут быть
отменены,
зависит от
реализации.
СМОТРИ
ТАКЖЕ¶
fork(2),
execve(2),
waitpid(2),
wait4(2),
kill(2),
wait(2),
exit(3) termios(3)
ПЕРЕВОД¶
Перевёл с
английского
Виктор
Вислобоков
<corochoone@perm.ru> 2003