在程序中使用atexit()函数注册的处理程序通常是在正常程序退出时调用的。那么问题是,这些处理程序只会调用一次还是每次程序退出都会调用呢?答案是只会调用一次。
下面这段示例代码演示了如何在程序退出时使用atexit()注册一个处理程序,并通过输出来观察处理程序的调用情况:
#include
void cleanup() { printf("cleanup function called.\n"); }
int main() { printf("main function start.\n");
// 注册处理程序
atexit(cleanup);
printf("main function end.\n");
exit(0);
}
上述程序运行后,输出结果如下:
main function start. main function end. cleanup function called.
可以看到,处理程序只在程序退出时被调用了一次。