Namespaces
Variants

std::_Exit

De es.cppreference.net
 
 
Biblioteca de utilidades
Soporte de lenguaje
Soporte de tipos (tipos básicos, RTTI)
Macros de prueba de características de la biblioteca (C++20)
Utilidades de programa
Funciones variádicas
Soporte de corrutinas (C++20)
Soporte de contratos (C++26)
Comparación a tres vías
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Utilidades generales
Operadores relacionales (obsoleto en C++20)
 
 
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 std::_Exit.

(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)