본문 바로가기
Language/C언어

C046_exit 함수 사용하기

by OdOp 관리자 2024. 1. 4.
SMALL

exit함수에 대해 설명하기에 앞서서 noreturn함수에 대해 조금은 알아야 할 필요가 있습니다. 

 

 

noreturn 

말 그대로 리턴되는 값이 없다는 뜻입니다. 그면 void와의 차이점은 무엇일까요???

 

void함수는 main문에서 실행된 후에도 그 후의 코드들을 진행할 수 있습니다. 하지만 noreturn함수는 그렇지 않습니다.

역시 말로 설명하니 어려우니 간단한 예제를 살펴보도록 하겠습니다. 

 

#include <stdio.h>
#include <stdlib.h>

void    ing(void)
{
    printf("\n ... ing ... \n");
}

int main(void)
{
    printf("main function start\n");
    ing();
    printf("\nmain function finish\n");
    exit(0);
    printf("exit after\n");
}

 

위의 코드의 실행은 아래와 같습니다. 

 

main function start
 ... ing ...
main function finish

 

"exit after\n"이 출력이 되지 않습니다. exit함수 호출 이후에 다시 main함수로 돌아오지 않은 것입니다. 

즉, noreturn함수는 호출한 함수에게 아무런 값을 반환하지 않아도 된다는 것을 컴파일러에게 미리 알리는 키워드입니다. 

 

이제 exit함수가 어떤 함수인지 알아보도록 하겠습니다. 

 

exit 함수

exit함수는 프로세스가 정상적으로 종료되게 해주는 함수입니다. 

열려 있는 모든 파일을 닫고 출력 버퍼에 저장된 모든 것을 출력합니다. 쉽게 설명을 해드리도록 하겠습니다. 

 

열려 있는 모든 파일을 닫는다는 말은 무엇일까요??

저희가 open함수를 이용해 파일을 열었다고 가정해 보도록 하겠습니다. 그 이후 exit함수를 실행을 하면 알아서 닫아주게 됩니다. 

 

출력 버퍼에 저장된 모든 것을 출력한다는 것은 무엇일까요??

말 그대로 PC까지 출력하지 않은 것이 있다면 출력하는 것입니다. 

 

함수의 원형을 살펴보도록 하겠습니다. 

#include <stdlib.h>

noreturn void	exit(int status);

 

status는 프로세스가 어떻게 종료되는지 운영체제에게 알려주는 인자입니다. 

정상적으로 종료 시 인자값으로 '0'을,

예기치 못하게 종료 시에는 인자값으로 '1'을 status에 입력하게 됩니다. 

 

 

LIST

'Language > C언어' 카테고리의 다른 글

C048_unlink 함수 사용하기  (0) 2024.01.06
C047_access 함수 사용하기  (2) 2024.01.05
C045_perror함수 사용하기  (0) 2024.01.03
C044_malloc 사용하기  (0) 2024.01.02
C043_가변인자 사용하기  (0) 2023.12.30