提问人:Amit 提问时间:6/13/2023 最后编辑:Amit 更新时间:6/13/2023 访问量:191
'file.sync()'可以用来关闭文件吗?
Can `file.sync()` be used for closing the file?
问:
我正在编写 Go 中文件 IO 操作的基准测试。
我想在执行简单的 IO 操作(如创建、打开、读取、写入、删除文件)时避免任何操作系统级别的异步或缓存。
从这个 SO 问题中:何时在 Go 中刷新文件?我知道,简单的写作是不够的,因为它不能保证完成实际的磁盘操作。
因此,我将代码更改为
start := time.Now()
_, e = file.Write(b)
if e == nil {
e = file.Sync()
}
elapsed := time.Since(start)
我假设这将负责写入操作。
对于“创建”、“读取”和“打开”操作,我凭直觉认为,如果相关操作完成时没有任何错误,则将执行实际的磁盘操作。如果错了,请在这里纠正我的理解。
我关心的是关闭和删除文件。
我检查了这个 安全关闭 golang 中的文件描述符,但在我的上下文中没有多大意义
目前,我的文件关闭代码如下所示
start := time.Now()
e = file.Close()
elapsed := time.Since(start)
我正在用于删除文件。os.Remove(fileName)
我还可以考虑关闭/删除操作的可能的操作系统级别异步,以及当程序调用关闭/删除文件时,文件实例将被标记为关闭或删除,并且实际的磁盘操作将在操作系统决定时完成。
方法可以帮助关闭文件吗?sync
有什么更好的方法来保证文件正在删除(没有太大的开销 - 比如文件在删除后立即存在循环)
答: 暂无答案
评论
O_DIRECT
fsync