En C, chaînon manquant entre « processus principal se termine » à « appeler toutes les fonctions enregistrées avec atexit »

StackOverflow https://stackoverflow.com/questions/1799306

  •  22-09-2019
  •  | 
  •  

Question

En C, lorsque le principal processus se termine - comment savoir appeler toutes les fonctions enregistrées avec atexit()

Je comprends comment fonctionne atexit(), mais je ne comprends pas la communication entre « processus principal de fin » et « appelle toutes les fonctions enregistrées avec atexit() » Je suis peut être un peu redondant.

Merci!

Était-ce utile?

La solution

De la norme C [ Lien PDF] (5.1.2.2.3):

  

un retour de l'appel initial à la fonction main équivaut à appeler la fonction de exit avec la valeur renvoyée par la fonction de main comme argument; atteindre la } qui termine la principale fonction retourne une valeur de 0.

Il est de la responsabilité de la fonction exit pour appeler les fonctions enregistrées avec atexit (voir 7.20.4.3 dans la norme pour une description de tout ce qui fait exit).

Autres conseils

En C, la fonction main() est en fait appelée par une autre fonction, qui est intégré dans le moteur d'exécution. Cette fonction, après la fin de la fonction main(), fait un peu plus de choses à nettoyer. L'un d'eux est d'appeler toutes les fonctions qui ont été enregistrées au atexit(). Cette fonction stocke en fait une sorte de liste statique des pointeurs de fonction, qui sera appelé par le moteur d'exécution après main().

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top