EXIT(2)

НАЗВАНИЕ
exit, _exit - уничтожение вызвавшего процесса

СИНТАКСИС


        void exit (status)

        int status;

        

        void _exit (status)

        int status;

ОПИСАНИЕ
Системный вызов exit терминирует обратившийся к нему процесс, при этом последовательно выполняются следующие действия:

У всех существующих потомков терминировавшихся процессов, а также у зомби-процессов идентификатор родительского процесса устанавливается равным 1. Таким образом, все эти процессы наследуются инициализационным процессом [см. intro(2)].

Все присоединенные разделяемые сегменты памяти отсоединяются и в связанных с ними структурах данных значения полей shm_nattach уменьшаются на 1.

В каждом семафоре, для которого у процесса имеется значение semadj, это значение прибавляется к полю semval.

Если процесс удерживал в памяти сегмент команд, данных или всего себя целиком, то удержание отменяется [см. plock(2)].

Если включен режим сбора статистической информации, то в файл сбора статистики помещается запись с информацией о процессе [см. acct(2)].

Если идентификатор процесса, идентификатор группы терминала и идентификатор группы процессов у процесса, вызвавшего exit, совпадают, то всем процессам с тем же идентификатором группы процессов посылается сигнал SIGHUP.

Родительскому процессу посылается сигнал SIGCLD (завершение порожденного процесса).

C-функция exit перед уничтожением процесса может выполнять некоторые терминирующие действия, например, завершение профилирования. Функция _exit немедленно уничтожает вызвавший процесс.

СМ. ТАКЖЕ
acct(2), intro(2), plock(2), semop(2), signal(2), sigset(2), wait(2).

ПРЕДОСТЕРЕЖЕНИЯ
См. ПРЕДОСТЕРЕЖЕНИЯ в signal(2).

ДИАГНОСТИКА
Диагностика отсутствует, так как из системного вызова exit управление никогда не возвращается.