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

关闭文件时会出错吗?

关闭文件时会出错吗?

Go
翻阅古今 2022-01-17 20:09:41
编程时,我经常打开和关闭文件。我了解打开文件时,检查错误以查看它是否确实打开非常重要。我不知道一个实例,但关闭文件时会出现问题(除非打开文件确实出错并且未选中)。我目前正在 go 中编程,如果需要,该函数可以os在包下返回错误。我知道在 C++ 中这也是可能的。.Close()最后,我的问题是尝试关闭文件时会导致错误的情况是什么?
查看完整描述

2 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

是的。关闭文件可能会导致错误/失败。例如,请参阅close(3)可以返回的错误 - http://linux.die.net/man/3/close - 文件系统损坏之类的东西是可能的原因之一。

通常,除了记录错误并知道您的数据可能被搞砸(取决于错误)之外,您实际上无能为力 - 您很少可以“修复它”,除非您可能会在其他地方重新写入数据仍然有它等。

您使用的语言(Go、C++ 等)无关紧要。如果文件系统已满、损坏或有人从物理上撕掉了硬盘驱动器,那么您的编程语言就无法拯救您,并且关闭将失败,任何人都在猜测您的数据是否安全地存储在某个地方。


查看完整回答
反对 回复 2022-01-17
?
www说

TA贡献1775条经验 获得超8个赞

在操作系统级别,关闭文件时也可能出现问题,尤其是当您写入文件时(即缓冲问题、磁盘空间不足、媒体删除等)。

C++fstream有一个void close()不返回任何内容的函数。原则是一旦你调用了close,无论是否有错误,你都不能再使用流。但是,当发生关闭错误时,会设置失败位,以便可以检测到它,并且可以通过通常的方式检索错误代码。

Cfclose()返回一个int显示是否有错误。如果您想知道它失败的原因,您必须获取并分析errno错误代码。它不像 void 函数那样不言自明,但在这里,无论是否有错误,在结束调用后您都不能再使用 FILE* 了。


查看完整回答
反对 回复 2022-01-17
  • 2 回答
  • 0 关注
  • 184 浏览
慕课专栏
更多

添加回答

举报

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