fsync, fdatasync - synchronize a file's complete in-core
state with that on disk
SYNOPSIS
#include <unistd.h>
int fsync(int fd);
int fdatasync(int fd);
DESCRIPTION
fsync copies all in-core parts of a file to disk, and
waits until the device reports that all parts are on sta
ble storage. It also updates metadata stat information.
It does not necessarily ensure that the entry in the
directory containing the file has also reached disk. For
that an explicit fsync on the file descriptor of the
directory is also needed.
fdatasync does the same as fsync but only flushes user
data, not the meta data like the mtime or atime.
RETURN VALUE
On success, zero is returned. On error, -1 is returned,
and errno is set appropriately.
ERRORS
EBADF fd is not a valid file descriptor open for writing.
EROFS, EINVAL
fd is bound to a special file which does not sup
port synchronization.
EIO An error occurred during synchronization.
NOTES
In case the hard disk has write cache enabled, the data
may not really be on permanent storage when fsync/fdata
sync return.
When an ext2 file system is mounted with the sync option,
directory entries are also implicitely synced by fsync.
On kernels before 2.4, fsync on big files can be ineffi
cient. An alternative might be to use the O_SYNC flag to
open(2).
CONFORMING TO
POSIX.1b (formerly POSIX.4)
SEE ALSO
bdflush(2), open(2), sync(2), mount(8), update(8), sync(8)
Man(1) output converted with
man2html