Namespaces
Variants
Actions

std::_Exit

From cppreference.com
< cpp‎ | utility‎ | program
 
 
Utilities library
General utilities
Relational operators (deprecated in C++20)
(C++20)(C++20)(C++20)  
(C++20)
(C++20)
(C++14)
(C++11)
(C++11)
(C++23)
(C++11)
(C++17)
Common vocabulary types
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)


 
 
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 to std::at_quick_exit() or std::atexit() are not called. Whether open resources such as files are closed is implementation defined.

If exit_code is 0 or EXIT_SUCCESS , an implementation-defined status indicating successful termination is returned to the host environment. If exit_code is EXIT_FAILURE , an implementation-defined status, indicating unsuccessful termination, is returned. In other cases implementation-defined status value is returned.

A freestanding implementation is required to provide std::_Exit.

(since C++23)

[edit] Parameters

exit_code - exit status of the program

[edit] Return value

(none)

[edit] Notes

Although _Exit is required to be freestanding since C++23, it is not required to be available in a freestanding C implementation.

[edit] Example

Run this code
#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 called
 const int result = std::atexit (atexit_handler);
 
 if (result != 0)
 {
 std::cerr << "atexit registration failed\n";
 return EXIT_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

[edit] See also

causes abnormal program termination (without cleaning up)
(function) [edit]
causes normal program termination with cleaning up
(function) [edit]
C documentation for _Exit
Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/utility/program/_Exit&oldid=178765"

AltStyle によって変換されたページ (->オリジナル) /