在 C 中,当主进程结束时——它如何知道调用任何注册的函数atexit()?
我了解如何atexit()工作,但我不了解“主进程结束”和“调用任何注册的函数”之间的通信atexit()我有点多余。
谢谢!
在 C 语言中,该main()函数实际上是由一些内置在运行时中的其他函数调用的。这个函数,在main()函数结束后,会做更多的事情来清理。其中之一是调用已在atexit(). 这个函数实际上存储了某种函数指针的静态列表,运行时之后会调用它main()。
来自C 标准[PDF 链接] (5.1.2.2.3):
对函数的初始调用的返回
main等效于以exit函数返回的值main作为参数调用函数;到达}终止主函数的返回值0。
exit调用注册的函数是函数的责任atexit(参见标准中的 7.20.4.3 以了解所做的所有事情的描述exit)。