关闭文件时会出错吗?

编程时,我经常打开和关闭文件。我了解打开文件时,检查错误以查看它是否确实打开非常重要。我不知道一个实例,但关闭文件时会出现问题(除非打开文件确实出错并且未选中)。

我目前正在 go 中编程,如果需要,该函数可以os在包下返回错误。我知道在 C++ 中这也是可能的。.Close()

最后,我的问题是尝试关闭文件时会导致错误的情况是什么?


翻阅古今
浏览 186回答 2
2回答

慕村9548890

是的。关闭文件可能会导致错误/失败。例如,请参阅close(3)可以返回的错误 - http://linux.die.net/man/3/close - 文件系统损坏之类的东西是可能的原因之一。通常,除了记录错误并知道您的数据可能被搞砸(取决于错误)之外,您实际上无能为力 - 您很少可以“修复它”,除非您可能会在其他地方重新写入数据仍然有它等。您使用的语言(Go、C++ 等)无关紧要。如果文件系统已满、损坏或有人从物理上撕掉了硬盘驱动器,那么您的编程语言就无法拯救您,并且关闭将失败,任何人都在猜测您的数据是否安全地存储在某个地方。

www说

在操作系统级别,关闭文件时也可能出现问题,尤其是当您写入文件时(即缓冲问题、磁盘空间不足、媒体删除等)。C++fstream有一个void close()不返回任何内容的函数。原则是一旦你调用了close,无论是否有错误,你都不能再使用流。但是,当发生关闭错误时,会设置失败位,以便可以检测到它,并且可以通过通常的方式检索错误代码。Cfclose()返回一个int显示是否有错误。如果您想知道它失败的原因,您必须获取并分析errno错误代码。它不像 void 函数那样不言自明,但在这里,无论是否有错误,在结束调用后您都不能再使用 FILE* 了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go