在C中,“主进程结束”与“调用atexit注册的任何函数”之间缺少链接

时间:2009-11-25 19:14:12

标签: c process main atexit

在C中,当主要流程结束时 - 如何调用使用atexit()注册的任何功能?

我理解atexit()是如何工作的,但我不理解“主要流程结束”和“调用atexit()注册的任何函数”之间的沟通。我有点多余。

谢谢!

2 个答案:

答案 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>