EXIT(2) EXIT(2) НАЗВАНИЕ exit, _exit - уничтожение вызвавшего процесса СИНТАКСИС |void exit (status) |int status; | |void _exit (status) |int status; ОПИСАНИЕ Системный вызов exit терминирует обратившийся к нему процесс, при этом последовательно выполняются следующие действия: В вызвавшем процессе закрываются все дескрипторы откры- тых файлов. Если родительский процесс находится в состоянии вызова wait, то системный вызов wait завершается, выдавая ро- дительскому процессу в качестве результата идентифика- тор терминировавшегося процесса и младшие 8 бит кода его завершения [см. wait(2)]. Если родительский процесс не находится в состоянии вы- зова wait, то процесс, вызвавший exit, переходит в сос- тояние зомби. Это такое состояние, когда процесс зани- мает только элемент в таблице процессов и не занимает памяти ни в адресном пространстве пользователя, ни в адресном пространстве ядра. Элемент таблицы процессов, занятый зомби-процессом, содержит информацию о времени, затраченном процессом. Эта информация необходима для вызова times [см. ]. У всех существующих потомков терминировавшихся процес- сов, а также у зомби-процессов идентификатор родительс- кого процесса устанавливается равным 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 управление никогда не возвращается.