fsync不会将数据写入文件。

4

我有两个(POSIX)线程,像这样写入日志文件:

pthread_mutex_lock(&log_mutex);
fprintf(LOG, "something...\n");
fsync(fileno(LOG));
pthread_mutex_unlock(&log_mutex);

文件在 main() 中以模式 "a" 使用 fopen() 打开。在进程运行时,我无法使用 cattail 查看文件中的任何内容,但是在进程终止并关闭文件(使用fclose())后,所有行都存在其中。

我做错了什么?


2
也许你想使用fflush()? - Manuel Faux
2个回答

8

1

由于您在C中使用了FILE句柄,因此需要通过调用fflush()将数据从C/C++缓冲区刷新到内核缓冲区。fsync不是必需的,除非您还想确保数据到达底层物理存储,特别是出于耐久性考虑。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接