EXIT(2)

명칭
_exit - 호출원프로세스를 종료한다

프로그램 라이브러리
libc

서식
<unistd.h> void _exit(int status)

해설
_exit() 함수는 프로세스를 종료시켜, 이후와 같은 결과를 가져옵니다. :

•   호출원프로세스내의 모든 기술자가 닫혀집니다. 이것에는 지연이 수반하는 일이 있습니다. 예를 들어, 출력이 모두 나와 버리는 것을 대기하는 것입니다. 이 상태의 프로세스는 이미 다 죽어가고 있으므로, 새롭게 kill 는 할 수 없습니다.

•   호출원프로세스의 parent process에, 미해결의 wait(2) 호출이 있는 경우 또는 SIGCHLD 시그널을 포착했을 경우, 호출원프로세스의 종료가 parent process에 통지되어 wait(2) 그리고 정의된 것처럼 status 하지만 설정됩니다.

•   호출원프로세스에 child process가 존재한다면, 그 모든 child process의 parent process ID 는 1 으로 설정됩니다. 초기화 프로세스 (intro(2) 의 정의 섹션을 참조) 하지만, 이러한 각 프로세스를 계승합니다.

•   프로세스의 종료에 의해 몇개의 프로세스 그룹이 부모의 없는 아이가 되는 경우 (통상은 그룹의 멤버 전원에 대한 부모가 종료했기 때문에. intro(2) 의 “고아가 된 프로세스 그룹 (Orphaned Process Group)” (을)를 참조), 그리고 부모가 없는 그룹의 멤버중 한쪽이 정지되고 있는 경우, 그 새로운 부모가 없는 프로세스 그룹의 모든 멤버에 SIGHUP 시그널과 SIGCONT 시그널이 송신됩니다.

•   프로세스가 제어 프로세스의 경우 (intro(2) (을)를 참조), SIGHUP 시그널이 제어 단말의 foreground 프로세스 그룹에 송신되어 제어 단말에의 현재의 모든 액세스가 무효로 됩니다.

대부분의 C 프로그램은 프로그램 라이브러리 routine exit(3) (을)를 호출합니다. 이것은 버퍼를 플래시 해, 스트림을 닫아 일시파일을 안린크 하는 등 한 후에 _exit() (을)를 호출합니다.

반환값
_exit() (은)는 돌아오지 않습니다.

관련 항목
fork(2), sigaction(2), wait(2), exit(3)

표준
_exit() 함수는 p1003.1-90 에 준거하고 있습니다.

역사
_exit() 함수는 AT&T UNIX 그리고 등장했습니다.