golang Open函数打开的文件不主动关闭,在程序关闭时会发生什么?

使用Open打开一个文本文件,在不主动调用file.Close()时,也没有写到defer中,就是代码没有关闭这一步操作.并且一直在写入文件内容
当程序退出时(正常退出,或者遇到异常非正常退出),那个打开的文件会发生什么?
会丢失部分写入的数据吗? 或者文件损坏或者其他?

阅读 10.1k
2 个回答

进程退出时操作系统会回收给进程的所有资源。

丢不丢失数据要看你有没有手动调用Flush方法
一般来说Write是写入缓冲区,Flush才是罗盘

一般情况下请手动调用file.Close(),不然你进程不结束,一直占着

  1. 如果不close,会导致进程结束回收资源而没来得及把write的缓存区数据写入文件
  2. linux系统对打开的文件数是有限制的,如果有一个程序大量的写文件,那么就大量的打开文件没关闭,资源浪费可见
  3. 如2所说,如果超过文件打开数,再打开文件将失败
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题