#include <stdlib.h> // <cstdlib> en C++
_Noreturn void quick_exit( int returnCode );
La fonction quick_exit, introduite par le standard C ISO 2011 (C11), permet de mettre fin rapidement au programme en spécifiant un code de retour. Lors d'une sortie rapide, les tâches habituelles de finalisation du processus ne seront pas exécutées.
Ce code de retour, passé en paramètre de la fonction exit
, permet de spécifier comment le programme se termine.
Une valeur nulle (0 ou constanteEXIT_SUCCESS) indique au système d'exploitation que l'exécution de ce programme s'est bien déroulée.
Tout autre valeur indique une sortie anormale du programme (la constante EXIT_FAILURE peut aussi être utilisée).
exit
, afin de garantir l'exécution
de toutes les tâches de finalisation dépendantes du système : flush et fermetures des flux, suppression des fichiers temporaires, ...
Cette fonction ne revoit pas de valeur étant donnée que le programme est stoppé.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
#include <stdio.h> #include <stdlib.h> #include <time.h> void exitFunction1() { puts( "\tPremière fonction de sortie normale enregistrée" ); } void exitFunction2() { puts( "\tSeconde fonction de sortie normale enregistrée" ); } void quickExitFunction1() { puts( "\tPremière fonction de sortie rapide enregistrée" ); } void quickExitFunction2() { puts( "\tSeconde fonction de sortie rapide enregistrée" ); } int main() { // Initialisation du générateur de nombres pseudo-aléatoires srand( time( NULL ) ); // Enregistrement de fonctions de rappel de sortie normale atexit( exitFunction1 ); atexit( exitFunction2 ); // Enregistrement de fonctions de rappel de sortie rapide at_quick_exit( quickExitFunction1 ); at_quick_exit( quickExitFunction2 ); // Choix d'un type de sortie (normale ou rapide). int exitType = rand() % 2; if ( exitType == 0 ) { puts( "Sortie normale demandée." ); puts( "Toutes les tâches de finalisation seront exécutées :" ); puts( "flush et fermetures des flux, suppression des fichiers temporaires, ..." ); exit( 0 ); } else { puts( "Sortie rapide demandée." ); puts( "Aucune autres tâches de finalisation ne sera exécutée." ); puts( "à l'exception des fonctions enregistrée avec at_quick_exit." ); quick_exit( 0 ); } return EXIT_SUCCESS; } |
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :