std:: _Exit
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Program termination | |||||||||||||||||||||
|
|||||||||||||||||||||
| Unreachable control flow | |||||||||||||||||||||
|
(C++23)
|
|||||||||||||||||||||
| Communicating with the environment | |||||||||||||||||||||
| Signals | |||||||||||||||||||||
| Signal types | |||||||||||||||||||||
| Non-local jumps | |||||||||||||||||||||
| Types | |||||||||||||||||||||
|
Definido en el encabezado
<cstdlib>
|
||
|
[
[
noreturn
]
]
void
_Exit
(
int
exit_code
)
noexcept
;
|
(desde C++11) | |
Causa la terminación normal del programa sin limpiar completamente los recursos.
Los destructores de variables con duraciones de almacenamiento automático, local de hilo y estático no son llamados. Las funciones pasadas a std::at_quick_exit() o std::atexit() no son llamadas. El cierre de recursos abiertos como archivos está definido por la implementación.
Si
exit_code
es
0
o
EXIT_SUCCESS
, se retorna al entorno anfitrión un estado definido por la implementación que indica terminación exitosa. Si
exit_code
es
EXIT_FAILURE
, se retorna un estado definido por la implementación que indica terminación
no exitosa
. En otros casos se retorna un valor de estado definido por la implementación.
|
Una implementación independiente debe proporcionar
|
(since C++23) |
Contenidos |
Parámetros
| exit_code | - | estado de salida del programa |
Valor de retorno
(ninguno)
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
|
|