FSYNC(2)

NAME
fsync - synchronize a file's in-core state with that on disk

SYNOPSIS
#include <unistd.h>
int
fsync(int fd);

DESCRIPTION
Fsync() causes all modified data and attributes of fd to be moved to a permanent storage device. This normally results in all in-core modified copies of buffers for the associated file to be written to a disk.

Fsync() should be used by programs that require a file to be in a known state, for example, in building a simple transaction facility.

IMPLEMENTATION NOTES

In the non-threaded library fsync() is implemented as the fsync syscall.

In the threaded library, the fsync syscall is assembled to _thread_sys_fsync() and fsync() is implemented as a function which locks fd for read and write, then calls _thread_sys_fsync(). Before returning, fsync() unlocks fd.

RETURN VALUES
A 0 value is returned on success. A -1 value indicates an error.

ERRORS
The fsync() fails if:

[EBADF]
    Fd is not a valid descriptor.

[EINVAL]
    Fd refers to a socket, not to a file.

[EIO]
    An I/O error occurred while reading from or writing to the file system.

SEE ALSO
sync(2), update(4), sync(8)

HISTORY
The fsync() function call appeared in 4.2BSD.