Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ quick_exit() 함수 완벽 정리: 개념, 문법, 실전 예제까지

이 글에서는 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()로 미리 등록해 두면 되며, 이때 콜백 함수는 마지막에 등록한 것부터 역순으로 실행된다는 점을 기억하세요.