exit() 시스템 콜
exit() 시스템 콜은 인자로 status 정보를 넘겨줍니다. status란 프로세스 종료 상태 번호를 말합니다. 예로 0은 정상종료를 나타냅니다. 보통 비정상 종료를 할 때 exit() 시스템 콜을 사용합니다.
부모 프로세스는 status & 0377(비트 계산) 계산 값으로 자식 프로세스 종료 상태 확인이 가능합니다.
return 0;과 exit(0)의 차이
exit() 함수는 즉시 프로세스를 종료합니다. 다음에 있는 코드는 실행되지 않습니다. 'return 0'은 단지 main()이라는 함수를 종료합니다. main()에서 return 시, C 언어 실행 파일에 기본으로 포함된 _start() 함수를 호출하게 됩니다. 해당 함수는 결국 exit() 함수를 호출합니다.
exit() 시스템 콜 주요 동작
1. atexit()에 등록된 함수를 실행합니다.
2. 열려 있는 모든 입출력 스트림 버터를 삭제합니다. (stdin, stdout, stderr이 파일처럼 다뤄지는데 이러한 데이터를 다 지워줍니다.)
3. 프로세스가 오픈한 파일을 모두 닫습니다.
4. tmpfile() 함수를 통해 생성한 임시 파일을 삭제합니다.
atexit() 함수
프로세스 종료 시 실행될 함수를 등록하기 위해 사용합니다. 등록된 함수를 등록된 역순서대로 실행합니다.
'시스템 프로그래밍' 카테고리의 다른 글
시그널 (signal) (0) | 2021.05.07 |
---|---|
IPC 기법 (0) | 2021.05.07 |
프로세스 관리 - 프로세스 생성 속도 향상 (copy on write) (0) | 2021.05.06 |
프로세스 관리 - 프로세스 생성 (0) | 2021.05.05 |
프로세스 관리 - 프로세스 ID (0) | 2021.05.05 |