문서 편집 권한이 없습니다. 다음 이유를 확인해주세요: 요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다: 사용자. 문서의 원본을 보거나 복사할 수 있습니다. [[분류: POSIX 시스템 콜]] == 개요 == 프로세스는 exit시스템 콜을 통해서 종료된다. exit시스템 콜이 호출되면 운영체제는 메모리나 파일과 같은 리소스들을 정리하고 프로세스를 종료시킨다. Exit 시스템 콜을 호출하면, # 우선 프로세스를 zombie status로 변경하고 # 자원을 회수한뒤 # disk에 buffered 된 아웃풋을 작성하고 # 프로세스의 contex를 제거한다. == exit 알고리즘 == # 시그널을 모두 무시하고 # hangup시그널을 모든 멤버에게 전송한다 # 모든 멤버에 대한 프로세스 그룹을 0으로 설정한다. # 열린파일을 모드 닫는다 # 현재 directory를 release한다 # root권한을 제출한다 # region을 free한다 # write해야할 것들을 작성한다 # process state를 좀비로 설정한다 # 자식프로세스의 모든 process ID를 1 (init)으로 설정한다 => 만약 자식중 한명이 zombie이면 death시그널을 init에게 보내 init이 자식을 죽이도록 한다. # 혹은 자신의 부모에게 위와 같은 일을 하도록 위임한다. == exit handler == : <code>#include stdlib.h</code> : <code>void atexit(void (*func)(void);</code> exit handler는 최대 32개까지 등록될수 있으며 시스템이 exit됨과 동시에 자동으로 호출된다. 등록한 함수가 여러 개일 때 등록한 역순으로 수행한다. == 예시 == <syntaxhighlight lang=c> #include <stdlib.h> int main(void) { exit(EXIT_SUCCESS); /* or return EXIT_SUCCESS */ } </syntaxhighlight> Exit 문서로 돌아갑니다.