Namespaces
Variants

std::_Exit

Depuis fr.cppreference.net
 
 
Bibliothèque d'utilitaires
Support linguistique
Support des types (types de base, RTTI)
Macros de test de fonctionnalités de la bibliothèque (C++20)
Utilitaires de programme
Fonctions variadiques
Support des coroutines (C++20)
Support des contrats (C++26)
Comparaison à trois voies
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Utilitaires généraux
Opérateurs relationnels (obsolète en C++20)
 
 
Défini dans l'en-tête <cstdlib>
[[noreturn]] void _Exit( int exit_code ) noexcept;
(depuis C++11)

Provoque une terminaison normale du programme sans nettoyer complètement les ressources.

Les destructeurs des variables avec une durée de stockage automatique, thread locale et statique ne sont pas appelés. Les fonctions passées à std::at_quick_exit() ou std::atexit() ne sont pas appelées. L'état de fermeture des ressources ouvertes telles que les fichiers est défini 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 renvoyé à l'environnement hôte. Si exit_code est EXIT_FAILURE, un statut défini par l'implémentation, indiquant une terminaison échouée, est renvoyé. Dans les autres cas, une valeur de statut définie par l'implémentation est renvoyée.

Une implémentation autonome est tenue de fournir std::_Exit.

(depuis C++23)

Paramètres

exit_code - statut de sortie du programme

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)