exit() 함수
exit() 함수는 호출된 시점에서 이후의 모든 작업을 중단하고 프로그램을 즉시 종료할 때 사용합니다. exit()이 호출되면 해당 프로세스가 곧바로 종료되며, 이 함수는 stdlib.h 헤더 파일에 선언되어 있습니다. 또한 어떠한 값도 반환하지 않습니다.
C 언어에서 exit()의 문법은 다음과 같습니다.
void exit(int status_value);
여기서 각 요소의 의미는 다음과 같습니다.
status_value − 부모 프로세스에 반환되는 값입니다.
다음은 C 언어에서 exit()를 사용한 예제입니다.
예제
#include <stdio.h>
#include <stdlib.h>
int main() {
int x = 10;
printf("x의 값 : %d\n", x);
exit(0);
printf("exit() 호출");
return 0;
}출력 결과
x의 값 : 10
위 프로그램에서는 변수 'x'를 초기화한 뒤 그 값을 출력하고 exit() 함수를 호출합니다. exit()이 호출되는 순간 실행이 즉시 종료되기 때문에 그 뒤에 있는 printf() 문은 실행되지 않습니다. exit() 호출 부분은 다음과 같습니다.
int x = 10;
printf("x의 값 : %d\n", x);
exit(0);abort() 함수
abort() 함수는 프로그램을 비정상적으로 종료시키는 함수입니다. 일반적인 프로그램 종료 목적으로는 이 함수의 사용이 권장되지 않으며, 역시 stdlib.h 헤더 파일에 선언되어 있습니다.
C 언어에서 abort()의 문법은 다음과 같습니다.
void abort(void);
다음은 C 언어에서 abort()를 사용한 예제입니다.
예제
#include <stdio.h>
#include <stdlib.h>
int main() {
int a = 15;
printf("a의 값 : %d\n", a);
abort();
printf("abort() 호출");
return 0;
}실행 결과는 다음과 같습니다.
출력 결과
a의 값 : 15
위 프로그램에서는 변수 'a'를 초기화하여 값을 출력한 후 abort() 함수를 호출합니다. abort()가 호출되면 실행이 즉시 종료되지만, 정상적인 종료 절차를 거치지 않고 비정상적인 방식으로 종료된다는 점이 exit()와 다릅니다. abort() 호출 부분은 다음과 같습니다.
int a = 15;
printf("a의 값 : %d\n", a);
abort();assert() 함수
assert() 함수는 assert.h 헤더 파일에 선언되어 있습니다. 이 함수는 인자로 전달된 표현식을 평가하며, 표현식이 참(true)이면 아무 작업도 수행하지 않고, 거짓(false)이면 프로그램 실행을 중단합니다.
C 언어에서 assert()의 문법은 다음과 같습니다.
void assert(int exp);
여기서 각 요소의 의미는 다음과 같습니다.
exp − 평가하고자 하는 표현식입니다.
다음은 C 언어에서 assert()를 사용한 예제입니다.
예제
#include <stdio.h>
#include <assert.h>
int main() {
int a = 15;
printf("a의 값 : %d\n", a);
assert(a!=15);
printf("assert() 호출");
return 0;
}출력 결과
a의 값 : 15 main: main.c:9: main: Assertion `a!=15' failed.
위 프로그램에서는 변수 'a'를 초기화한 뒤 그 값을 출력하고 assert() 함수를 호출합니다. assert()가 호출되면 'a'가 15와 같지 않다는 표현식을 평가하게 되는데, 실제로는 거짓이므로 프로그램 실행이 중단되고 오류 메시지가 출력됩니다. assert() 호출 부분은 다음과 같습니다.
int a = 15;
printf("a의 값 : %d\n", a);
assert(a!=15);세 함수의 핵심 차이점 정리
- exit(): 정상적인 종료 절차를 수행하면서 프로그램을 즉시 종료하며, 상태 코드를 부모 프로세스에 전달할 수 있습니다.
- abort(): 정리 작업 없이 프로그램을 비정상적으로 강제 종료하며, SIGABRT 신호를 발생시킵니다.
- assert(): 주로 디버깅 목적으로 조건을 검사하며, 조건이 거짓일 경우 프로그램을 중단하고 오류 메시지를 출력합니다.