gpt4 book ai didi

c - 如何(f)在c中同步linux下的目录

转载 作者:太空宇宙 更新时间:2023-11-04 04:58:51 25 4
gpt4 key购买 nike

我在 linux 下有一些 c 应用程序。我正在用 rename(...) 重命名一些文件如何确保重命名持久写入底层磁盘?

有了文件我可以做类似的事情:

FILE * f = fopen("foo","w");
...
fflush(f);
fsync(fileno(f));
fclose(f);

我如何在 c 中的 rename() 之后fsync(或类似的)目录?

最佳答案

这是你可以做你想做的事情的方式:

#include <fcntl.h>
int fd = open('/path/to/dir', O_RDONLY);
fsync(fd);

当然,不要忘记在不再需要时关闭 fd 文件描述符。

与一些误解相反,rename() 的原子性并不能保证文件会持久保存到磁盘。原子性保证仅确保文件系统缓冲区中的元数据处于一致状态,但不能确保它已持久化到磁盘。

关于c - 如何(f)在c中同步linux下的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51100698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com