奇思妙想 · 2024年 9月 11日 0

如何在函数返回或者程序退出前执行一些清理动作?

50 次浏览

有的时候,程序有执行文件操作、网络请求、数据库连接和其他资源申请,为了确保即使所在函数返回或者程序退出前,这些申请的资源也能被正确释放,有些编程语言提供语言级别或者运行时库程序退出执行特定例程。

  • C语言可通过atexit函数注册程序退出时(例如调用exit函数)需要执行的函数,注意,一些意外终止程序的行为可能不会执行atexit注册的函数。
    调用_exit或者发送中断信号Ctrl + C不会调用atexit注册的函数。
  • Go语言提供defer语句可以在函数返回前执行对应的函数或语句。