|
|
Defined in header <cstdlib> | ||
[[noreturn]]void _Exit(int exit_code)noexcept; | (since C++11) | |
Causes normal program termination to occur without completely cleaning the resources.
Destructors of variables with automatic, thread local and static storage durations are not called. Functions passed tostd::at_quick_exit() orstd::atexit() are not called. Whether open resources such as files are closed is implementation defined.
Ifexit_code
is0 orEXIT_SUCCESS, an implementation-defined status indicating successful termination is returned to the host environment. Ifexit_code
isEXIT_FAILURE, an implementation-defined status, indicatingunsuccessful termination, is returned. In other cases implementation-defined status value is returned.
A freestanding implementation is required to provide | (since C++23) |
Contents |
exit_code | - | exit status of the program |
(none)
Although_Exit
is required to be freestanding since C++23, it is not required to be available in a freestanding C implementation.
#include <iostream> class Static{public: ~Static(){std::cout<<"Static dtor\n";}}; class Local{public: ~Local(){std::cout<<"Local dtor\n";}}; Static static_variable;// dtor of this object will *not* be called void atexit_handler(){std::cout<<"atexit handler\n";} int main(){ Local local_variable;// dtor of this object will *not* be called // handler will *not* be calledconstint result=std::atexit(atexit_handler); if(result!=0){std::cerr<<"atexit registration failed\n";returnEXIT_FAILURE;} std::cout<<"test"<<std::endl;// flush from std::endl// needs to be here, otherwise nothing will be printed std::_Exit(EXIT_FAILURE);}
Output:
test
causes abnormal program termination (without cleaning up) (function)[edit] | |
causes normal program termination with cleaning up (function)[edit] | |
C documentation for_Exit |