이 글에서는 C++ STL에서 제공하는 quick_exit() 함수의 동작 원리, 문법, 그리고 실제 사용 예제를 자세히 알아보겠습니다.
quick_exit()란 무엇인가?
quick_exit() 함수는 C++ 표준 라이브러리(STL)에 내장된 함수로, <cstdlib> 헤더 파일에 정의되어 있습니다. 이 함수는 호출된 프로세스를 빠르게 종료하는 역할을 하며, 일반적인 종료 과정과 달리 리소스 정리 작업 없이 즉시 프로세스를 끝냅니다.
quick_exit()는 '정상 종료(normal termination)'로 분류되지만, exit()와 달리 추가적인 정리 작업을 수행하지 않습니다. 구체적으로 다음과 같은 특징이 있습니다.
- 객체의 소멸자(destructor)가 호출되지 않습니다.
- C 스트림(C streams)은 닫히거나 플러시(flush)됩니다.
- tmpfile()로 열었던 임시 파일들은 자동으로 삭제됩니다.
종료 상태 코드
quick_exit()로 프로세스를 종료하면 호스트 환경(host environment)에 상태 값이 반환됩니다.
- 0 또는 EXIT_SUCCESS → 프로그램이 성공적으로 종료되었음을 의미합니다.
- EXIT_FAILURE → 프로그램이 비정상적으로(실패하여) 종료되었음을 의미합니다.
문법(Syntax)
void quick_exit( int status );
매개변수(Parameters)
quick_exit() 함수는 아래 매개변수를 받습니다.
- status − 종료 상태 값을 나타냅니다. 0 또는 EXIT_SUCCESS이면 성공적인 종료, EXIT_FAILURE이면 실패한 종료를 의미합니다.
반환값(Return Value)
이 함수는 프로세스 자체를 종료하기 때문에 아무런 값도 반환하지 않습니다(void).
기본 동작 예제
입력
printf("Before exit");
quick_exit(EXIT_SUCCESS);
printf("After Exit");출력
Before exit
위 예제에서 볼 수 있듯이, quick_exit()가 호출되는 순간 프로세스가 즉시 종료되므로 그 이후의 printf("After Exit") 문은 실행되지 않습니다.
at_quick_exit()와 함께 사용하는 예제
quick_exit()가 호출될 때 실행할 콜백 함수를 등록하려면 at_quick_exit() 함수를 사용합니다. 등록된 함수들은 등록된 역순(LIFO 방식)으로 호출됩니다.
#include <bits/stdc++.h>
using namespace std;
void exit_func1(){
cout << "This is exit function 1" << endl;
}
void exit_func2(){
cout << "This is exit function 2" << endl;
}
void exit_func3(){
cout << "This is exit function 3" << endl;
}
void exit_func4(){
cout << "This is exit function 4" << endl;
}
int main(){
at_quick_exit(exit_func1);
at_quick_exit(exit_func2);
at_quick_exit(exit_func3);
at_quick_exit(exit_func4);
quick_exit(0);
return 0;
}출력
This is exit function 4 This is exit function 3 This is exit function 2 This is exit function 1
핵심 정리
quick_exit()는 객체 소멸자 호출 같은 무거운 정리 작업을 건너뛰고 신속하게 프로그램을 종료해야 할 때 유용한 함수입니다. 종료 시 실행해야 하는 최소한의 작업이 있다면 at_quick_exit()로 미리 등록해 두면 되며, 이때 콜백 함수는 마지막에 등록한 것부터 역순으로 실행된다는 점을 기억하세요.