我从一本书中读到一个问题,他说:“如果操作系统在程序终止后关闭文件,为什么程序员需要手动关闭文件(即调用file.close()
)?”为什么使用它后需要关闭文件?
我能想出的唯一原因是程序可能无法正确终止,所以文件可能仍然打开,因此会占用系统资源,因为文件保存在缓冲区中。
还有其他原因吗?
编辑:我想到了另一个原因。调用file.close()
要求操作系统将任何尚未提交到文件的更改刷新到磁盘。
我从一本书中读到一个问题,他说:“如果操作系统在程序终止后关闭文件,为什么程序员需要手动关闭文件(即调用file.close()
)?”为什么使用它后需要关闭文件?
我能想出的唯一原因是程序可能无法正确终止,所以文件可能仍然打开,因此会占用系统资源,因为文件保存在缓冲区中。
还有其他原因吗?
编辑:我想到了另一个原因。调用file.close()
要求操作系统将任何尚未提交到文件的更改刷新到磁盘。
如果程序员手动关闭文件,他们可以控制何时/如何释放资源。
如果留给操作系统,你无法确定何时/如果清理将发生,它通常也是不好的做法。
在某些情况下,程序会打开很多次,如果它们没有再次释放,它将耗尽文件描述符。
可能的重复:http://stackoverflow.com/questions/3944666/why-must-i-close-a-file-in-c – 2013-04-06 18:34:59