Namespaces
Variants

std:: _Exit

From cppreference.net
Utilities library
Défini dans l'en-tête <cstdlib>
[ [ noreturn ] ] void _Exit ( int exit_code ) noexcept ;
(depuis C++11)

Provoque l'arrêt normal du programme sans nettoyer complètement les ressources.

Les destructeurs des variables ayant des durées de stockage automatique, locales au thread et statiques ne sont pas appelés. Les fonctions passées à std::at_quick_exit() ou std::atexit() ne sont pas appelées. La fermeture des ressources ouvertes telles que les fichiers est définie par l'implémentation.

Si exit_code est 0 ou EXIT_SUCCESS , un statut défini par l'implémentation indiquant une terminaison réussie est retourné à l'environnement hôte. Si exit_code est EXIT_FAILURE , un statut défini par l'implémentation, indiquant une terminaison non réussie , est retourné. Dans les autres cas, une valeur de statut définie par l'implémentation est retournée.

Une implémentation autonome doit fournir std::_Exit .

(depuis C++23)

Table des matières

Paramètres

exit_code - statut de sortie du programme

Valeur de retour

(aucun)

Notes

Bien que _Exit soit requis d'être autonome depuis C++23, il n'est pas requis d'être disponible dans une implémentation C autonome.

Exemple

#include <iostream>
class Static
{
public:
    ~Static() 
    {
        std::cout << "Static dtor\n";
    }
};
class Local
{
public:
    ~Local() 
    {
        std::cout << "Local dtor\n";
    }
};
Static static_variable; // le dtor de cet objet ne sera *pas* appelé
void atexit_handler()
{
    std::cout << "atexit handler\n";
}
int main()
{
    Local local_variable; // le dtor de cet objet ne sera *pas* appelé
    // le handler ne sera *pas* appelé
    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
        // doit être ici, sinon rien ne sera affiché
    std::_Exit(EXIT_FAILURE);
}

Sortie :

test

Voir aussi

provoque la fin anormale du programme (sans nettoyage)
(fonction)
provoque la fin normale du programme avec nettoyage
(fonction)