fsync does not write data to file

c, fsync

Solution

I guess you need to call `fflush()` to flush the changed to the file system.

See also difference between fsync() and fflush().

Problem

I have two (POSIX) threads that write to a log file like this: ``` pthread_mutex_lock(&log_mutex); fprintf(LOG, "something...\n"); fsync(fileno(LOG)); pthread_mutex_unlock(&log_mutex); ``` The file is opened in `main()` with `fopen()` with mode "a". While the process is running I can't see anything appearing in the file with `cat` or `tail` although after the process is terminated and the file is `fclose()`-ed, the lines are all there. What am I doing wrong?

Original source

Related problems