来自fsync手册页的以下语句的含义是什么?
调用fsync()并不一定确保包含文件的目录中的条目也到达磁盘。为此,还需要在目录的文件描述符上显式地使用fsync()。
这是否意味着当我在文件上调用fsync时,fsync不会更新目录元数据?
同样的问题的另一个引语是(来自Robert的Linux系统编程书籍):
这两个函数都不保证包含该文件的任何更新目录条目都同步到磁盘。这意味着,如果最近更新了文件的链接,文件的数据可能会成功地到达磁盘,而不是关联的目录条目,从而使文件无法访问。
为什么文件的数据需要到达目录链接?如果我错了,请纠正我,但是目录只包含文件名和该文件的inode号。实际数据在文件中。“数据将到达文件而不是目录链接”的含义是什么?
发布于 2018-01-04 11:56:00
它的意思是:
如果最近更新了文件的链接,文件的数据可能会成功地到达磁盘,但是
关联的目录项可能无法成功到达磁盘。
使文件不可访问。
在创建新文件时,这可能是一个需要考虑的问题。
我会忽略对“文件链接”的概括,除非您知道硬链接正在创建。
这是否意味着当我在文件上调用fsync时,fsync不会更新目录元数据?
是。或者更确切地说,你不能依赖它。(有些实现可能总是在fsync返回之前更新它。)
https://unix.stackexchange.com/questions/414749
复制相似问题