在C语言中,当main()函数退出时调用额外的函数是否可能?
谢谢!
尝试使用atexit()
函数:
void myfunc() {
/* Called when the program ends */
}
int main( int arc, char *argv[] ) {
atexit( myfunc );
...
return 0;
}
虽然 atexit()
是注册在进程终止时运行函数的标准方式,但GCC提供了一个析构函数function attribute*,它会在main()
完成或exit()
被调用时自动调用函数。
void __attribute__ ((destructor)) my_fini(void);
* GCC 特定
atexit
,对于如何调用exit
的粗心大意仍然是危险的。它不是异步信号安全的,并且由于它会刷新所有打开的文件,因此如果您违反了调用规则,它几乎肯定会给您带来问题。 - R.. GitHub STOP HELPING ICE