关闭文件时可以收到错误吗?

时间:2016-06-22 20:29:56

标签: c++ file go

编程时我经常打开和关闭文件。我知道在打开文件时,检查错误是否确实是否确实打开是很重要的。虽然关闭文件时会出现问题,但我不知道某个实例(除非打开文件确实出错并且未经检查)。

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

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

2 个答案:

答案 0 :(得分:7)

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

除了记录错误并且知道您的数据可能已被搞砸(取决于错误)之外,您通常无法真正做很多事情 - 您可以很少“修复它”,除非可能在某处重新编写数据否则如果你还有它等等。

您正在使用的语言(Go,C ++,无论)无关紧要。如果文件系统已满,损坏或者有人物理地撕掉了硬盘驱动器,那么你的编程语言就无法保存,关闭将会失败,任何人都可以猜测你的数据是否安全存储在某处。

答案 1 :(得分:4)

在操作系统级别,关闭文件时也会出现问题,特别是如果您已写入文件(即缓冲问题,磁盘空间不足,介质已移除等等)。

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

C fclose()会返回int,显示是否有错误。如果您想知道它失败的原因,您必须获取并分析errno错误代码。它不像自由函数那样自我解释,但是在这里,你不能在结束通话后再使用FILE *,无论是否有错误。