`quick_exit` 함수

quick_exit 함수 (quick_exit)

프로그램을 끝내긴 끝내되, exit처럼 모든 자원을 꼼꼼히 정리하는 건 부담스러운 상황이 있어요. 그럴 때 쓰는 '가볍고 빠른 종료' 함수가 quick_exit이에요. 뭘 정리하고 뭘 정리하지 않는지가 이 함수의 핵심이에요.

출처: cppreference

본문

함수 원형

<stdlib.h>에 정의돼 있어요.

_Noreturn void quick_exit( int exit_code );   // (since C11, until C23)
[[noreturn]] void quick_exit( int exit_code );// (since C23)

설명 (Explanation)

quick_exit는 자원을 완전히 정리하지 않고 프로그램을 정상 종료시켜요.

at_quick_exit로 등록한 함수들이 등록과 반대 순서로 호출돼요. 등록된 함수들을 모두 호출한 뒤에는 _Exit(exit_code)를 호출해요.

atexit으로 등록한 함수나 signal로 설치한 신호 핸들러는 호출되지 않아요.

매개변수 (Parameters)

  • exit_code — 프로그램의 종료 상태

반환값 (Return value)

없음.

예제 (Example)

at_quick_exit로 등록한 f1, f2는 호출되지만, atexit으로 등록한 f3은 호출되지 않는 걸 보여 주는 예시예요.

#include <stdlib.h>
#include <stdio.h>
 
void f1(void)
{
    puts("pushed first");
    fflush(stdout);
}
 
void f2(void)
{
    puts("pushed second");
}

void f3(void)
{
    puts("won't be called");
}
 
int main(void)
{
    at_quick_exit(f1);
    at_quick_exit(f2);
    atexit(f3);
    quick_exit(0);
}

출력:

pushed second
pushed first

f3atexit으로 등록했으므로 출력에 나타나지 않아요.

같이 보기 (See also)

  • abort — 정리 없이 비정상 종료
  • atexitexit() 호출 시 불릴 함수 등록
  • at_quick_exit(C11) — quick_exit 호출 시 불릴 함수 등록