std::_Exit
| 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 |
(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) |
|
|
Documentation C
pour
_Exit
|
|