在C中,当主要流程结束时 - 如何调用使用atexit()
注册的任何功能?
我理解atexit()
是如何工作的,但我不理解“主要流程结束”和“调用atexit()
注册的任何函数”之间的沟通。我有点多余。
谢谢!
答案 0 :(得分:6)
在C中,main()
函数实际上由一些其他函数调用,该函数内置于运行时。在main()
函数结束后,此函数会执行一些清理操作。其中之一是调用已在atexit()
注册的任何函数。这个函数实际上存储了某种静态的函数指针列表,它们将在main()
之后被运行时调用。
答案 1 :(得分:1)
来自the C standard [PDF链接](5.1.2.2.3):
从初始调用到
main
函数的返回等同于调用exit
函数,其中main
函数返回的值作为其参数;到达终止main函数的}
会返回值0
。
exit
函数负责调用atexit
注册的函数(有关exit
所做的所有事情的描述,请参阅标准中的7.20.4.3。) p>