반응형
exit(3)
#include <stdlib.h>
void exit(int status);
exit(3)함수는 _exit(2) 시스템콜 함수를 wrapping한 일반함수로 실행중인 현재 프로세스를 종료합니다. 이 함수를 호출하면 프로그램을 종료하면서, fopen(3) 등으로 생성한 stream 중 fclose(3)을 하지 않고 남아 있는 FILE *를 확인하고 fclose(3)를 호출하여 kernel에 쓰지않고 버퍼링중인 데이터 쓰기를 수행하고 file을 close합니다. exit(3)은 stream flush하기와 atexit(3) 또는 on_exit(3)로 등록한 종료 handler함수를 호출합니다.
main()함수가 return해도 프로세스를 종료 하지만, main()함수가 아닌 곳에서 치명적인 오류가 발생하여 종료하기 위해서는 이 _exit(2), _Exit(2), exit(3)함수를 호출해야 합니다.
파라미터
status
- 부모 프로세스로 넘겨줄 값을 설정합니다.
status가 0이면 보통 정상종료로 인식합니다.
부모 프로세스는 wait(2) 또는 waitpid(2) 등으로 status 값을 받을 수 있습니다.
RETURN
없음
- 이 함수는 프로그램을 종료시키므로 그 다음 로직을 실행하지 않으므로
return 값을 받을 수 없기 때문에 return이 없습니다.
활용 예제
Sample
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <errno.h>
int myfunc(const char *filename)
{
FILE *fp;
if((fp = fopen(filename, "r")) == NULL) {
fprintf(stderr, "%s file open error: %s\n", filename, strerror(errno));
exit(1);
}
......
}
see also: Process 관리 함수
반응형
'C언어 header > stdlib.h' 카테고리의 다른 글
realpath(3) - 절대 path로 변환하는 함수 (0) | 2019.09.25 |
---|---|
realloc(3) - 메모리의 크기를 재할당하기 (3) | 2019.09.25 |
calloc(3) - 메모리 할당 및 초기화 수행 (0) | 2019.09.24 |
free(3) - 할당된 heap 메모리 해제 (0) | 2019.09.24 |
malloc(3) - heap memory 할당하기 (0) | 2019.09.24 |