In C, legame tra mancante “processo principale finisce” a “chiamare qualsiasi funzioni registrate con atexit”

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

  •  22-09-2019
  •  | 
  •  

Domanda

In C, quando finisce il processo principale -? Come fa a sapere di chiamare qualsiasi funzione registrati atexit()

ho capito come funziona atexit(), ma non capisco la comunicazione tra "processo principale fine" e "chiamare qualsiasi funzioni registrate con atexit()" Mi viene un po 'ridondante.

Grazie!

È stato utile?

Soluzione

C di serie [ PDF link] (5.1.2.2.3):

  

un ritorno dalla chiamata iniziale alla funzione main è equivalente a chiamare la funzione exit con il valore restituito dalla funzione main come argomento; raggiungendo la } che termina la funzione principale restituisce un valore 0.

E 'responsabilità della funzione exit per richiamare le funzioni registrate con atexit (vedi 7.20.4.3 nello standard per la descrizione di tutto ciò che fa exit).

Altri suggerimenti

In C, la funzione main() è effettivamente chiamato da qualche altra funzione, che è integrato nel runtime. Questa funzione, dopo la funzione main() finisce, fa un paio di cose per ripulire. Uno di loro è quello di chiamare qualsiasi funzione che sono state registrate con il atexit(). Questa funzione in realtà memorizza una sorta di elenco statico di puntatori a funzione, che sarà chiamato dal runtime dopo main().

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top