`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
f3은 atexit으로 등록했으므로 출력에 나타나지 않아요.
같이 보기 (See also)
abort— 정리 없이 비정상 종료atexit—exit()호출 시 불릴 함수 등록at_quick_exit(C11) —quick_exit호출 시 불릴 함수 등록