std::_Exit
| Definido en el encabezado <cstdlib>
|
||
[[noreturn]] void _Exit( int exit_code ) noexcept;
|
(desde C++11) | |
Provoca la terminación normal del programa sin limpiar completamente los recursos.
No se llaman a los destructores de variables con duración de almacenamiento automática, de hilo local y estática. Las funciones pasadas a std::at_quick_exit() o std::atexit() no se llaman. El hecho de que recursos abiertos como archivos se cierren está definido por la implementación.
Si exit_code es 0 o EXIT_SUCCESS, se devuelve al entorno anfitrión un estado definido por la implementación que indica terminación exitosa. Si exit_code es EXIT_FAILURE, se devuelve un estado definido por la implementación que indica terminación fallida. En otros casos se devuelve un valor de estado definido por la implementación.
|
Se requiere que una implementación independiente proporcione |
(desde C++23) |
Parámetros
| exit_code | - | estado de salida del programa |
Notas
Aunque
_Exit
es obligatorio en implementaciones independientes desde C++23, no es obligatorio que esté disponible en una implementación C independiente.
Ejemplo
#include <iostream> class Static { public: ~Static() { std::cout << "Static dtor\n"; } }; class Local { public: ~Local() { std::cout << "Local dtor\n"; } }; Static static_variable; // el dtor de este objeto *no* será llamado void atexit_handler() { std::cout << "atexit handler\n"; } int main() { Local local_variable; // el dtor de este objeto *no* será llamado // el handler *no* será llamado 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 de std::endl // debe estar aquí, de lo contrario no se imprimirá nada std::_Exit(EXIT_FAILURE); }
Salida:
test
Véase también
|
provoca la terminación anormal del programa (sin limpieza)
(función) |
|
|
provoca la terminación normal del programa con limpieza
(función) |
|
|
Documentación de C
para
_Exit
|
|