std::at_quick_exit
cppreference.net에서
| 헤더 <cstdlib>
|
||
int at_quick_exit( /*atexit-handler*/* func ) noexcept;
int at_quick_exit( /*c-atexit-handler*/* func ) noexcept;
|
에 정의됨 (1) | (C++11부터) |
extern "C++" using /*atexit-handler*/ = void();
extern "C" using /*c-atexit-handler*/ = void();
|
(2) | (설명 전용*)) |
func 가 가리키는 함수를 빠른 프로그램 종료 시 (std::quick_exit 를 통해) 호출하도록 등록합니다.
여러 스레드에서 함수를 호출해도 데이터 경합이 발생하지 않습니다. 구현에서는 최소 32개의 함수 등록을 지원하는 것이 보장됩니다. 정확한 제한은 구현 정의입니다.
등록된 함수는 정상 프로그램 종료 시 호출되지 않습니다. 그 경우에 함수를 호출해야 한다면 std::atexit 을 사용해야 합니다.
매개변수
| func | - | 빠른 프로그램 종료 시 호출될 함수에 대한 포인터 |
반환값
0 등록이 성공하면 0, 그렇지 않으면 0이 아닌 값입니다.
참고 사항
두 오버로드는 매개변수
func
의 타입이 서로 다르기 때문에 구별됩니다 (
언어 링크
는 해당 타입의 일부입니다).
예제
이 코드 실행
#include <cstdlib> #include <iostream> void f1() { std::cout << "pushed first" << std::endl; // flush is intentional } extern "C" void f2() { std::cout << "pushed second\n"; } int main() { auto f3 = [] { std::cout << "pushed third\n"; }; std::at_quick_exit(f1); std::at_quick_exit(f2); std::at_quick_exit(f3); std::quick_exit(0); }
출력:
pushed third pushed second pushed first
참고 항목
|
비정상적인 프로그램 종료를 유발합니다 (정리 작업 없음)
(function) |
|
|
정리 작업과 함께 정상적인 프로그램 종료를 유발합니다
(function) |
|
|
std::exit()
호출 시 실행될 함수를 등록합니다
(function) |
|
|
(C++11)
|
완전한 정리 작업 없이 빠른 프로그램 종료를 유발합니다
(function) |
|
C documentation
for
at_quick_exit
|
|