fsync不会将数据写入文件

Mic*_*ald 4 c fsync

我有两个(POSIX)线程写入日志文件,如下所示:

pthread_mutex_lock(&log_mutex);
fprintf(LOG, "something...\n");
fsync(fileno(LOG));
pthread_mutex_unlock(&log_mutex);
Run Code Online (Sandbox Code Playgroud)

该文件被打开main()fopen()与模式"一".当进程正在运行时,我看不到文件中出现的任何内容,cat或者tail虽然在进程终止并且文件为fclose()-ed之后,这些行都在那里.

我究竟做错了什么?

Man*_*aux 8

我想你需要调用fflush()将更改刷新到文件系统.

另请参阅fsync()和fflush()之间的区别.