En C, la falta de relación entre los “extremos” principal proceso de “llamar a ninguna función registrada con atexit”

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

  •  22-09-2019
  •  | 
  •  

Pregunta

En C, cuando los principales fines del proceso -? ¿Cómo sabe que llamar a ninguna función registrada con atexit()

Me entender cómo funciona atexit(), pero no entiendo la comunicación entre "proceso principal que termina" y "llamar a las funciones registradas con atexit()" estoy siendo un poco redundante.

Gracias!

¿Fue útil?

Solución

Desde la C estándar [ PDF Link] (5.1.2.2.3):

  

un retorno de la llamada inicial a la función main es equivalente a llamar a la función exit con el valor devuelto por la función main como su argumento; llegar a la } que termina la función principal devuelve un valor de 0.

Es la responsabilidad de la función exit a llamar a las funciones registradas con atexit (véase 7.20.4.3 en el estándar para la descripción de todo lo que hace exit).

Otros consejos

En C, la función main() se llama en realidad por alguna otra función, que se construye en el tiempo de ejecución. Esta función, después de que termine la función main(), hace algunas cosas más a la limpieza. Uno de ellos es llamar a las funciones que han sido registradas en la atexit(). Esta función almacena realmente algún tipo de lista estática de los punteros de función, que será llamado por el tiempo de ejecución después de main().

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top