为了账号安全,请及时绑定邮箱和手机立即绑定

在 golang 中,移动打开的文件会导致泄漏或任何其他问题吗?

在 golang 中,移动打开的文件会导致泄漏或任何其他问题吗?

Go
杨魅力 2023-04-24 16:07:08
考虑以下代码:f, err := os.Create(tmpFilepath)defer f.Close()// do some writing to fos.Rename(tmpFilepath, newpath)一些错误处理已被删除以简化。另外,我知道这段代码是错误的,但我试图了解这段代码在文件正确性和性能方面的影响。这里有资源泄漏吗?顺便说一句,解决方法是在您完成写入文件后关闭。
查看完整描述

1 回答

?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

如果我们正在讨论一个实现 POSIX 语义的操作系统和文件系统(也就是说,不是通常不允许您重命名打开的文件的 Windows),那绝对没有问题:打开的文件描述符仅算作指向文件的硬链接数据。

重命名文件的数据不会以某种方式与打开的文件描述符分离——将后者视为对该数据的一种“匿名”引用。

引用手册close(2):_

如果文件的链接数为0,当与该文件关联的所有文件描述符都关闭时,该文件占用的空间将被释放,该文件将不再可访问。


查看完整回答
反对 回复 2023-04-24
  • 1 回答
  • 0 关注
  • 114 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信