std:: _Exit
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Program termination | |||||||||||||||||||||
|
|||||||||||||||||||||
| Unreachable control flow | |||||||||||||||||||||
|
(C++23)
|
|||||||||||||||||||||
| Communicating with the environment | |||||||||||||||||||||
| Signals | |||||||||||||||||||||
| Signal types | |||||||||||||||||||||
| Non-local jumps | |||||||||||||||||||||
| Types | |||||||||||||||||||||
|
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
|
(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) |
|
|
Documentation C
pour
_Exit
|
|