有没有办法调用 fsync/flush fd 的父级?

Is there a way to call fsync/flush the parent of a fd?

当您对文件调用 fsync 时,您会刷新其缓冲区并确保将其写入磁盘。

但是如果你的程序新创建了一个文件,那么它需要记录在父目录的元数据中。因此,即使您 fsync 一个文件,也不能保证它在文件系统中持久存在。您还需要刷新父目录的缓冲区。

是否有一个简单的调用,例如 fsync_parent(fd) 可以完成此操作?如果?

(查看this问题,似乎没有C标准的方法来获取文件的父目录)

没有规范的 "the parent directory" 文件。一个文件可以有任意数量的 link,或者根本没有 link。如果您需要 包含(link 到)要同步的文件的特定 目录,您必须自己跟踪它。