Originální popis anglicky:
fsync, fdatasync - synchronize a file's complete in-core state with that on disk
Návod, kniha: Linux Programmer's Manual
#include <unistd.h>
int fsync(int fd);
int fdatasync(int fd);
fsync copies all in-core parts of a file to disk, and waits until the
device reports that all parts are on stable 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.
On success, zero is returned. On error, -1 is returned, and
errno is set
appropriately.
- EBADF
- fd is not a valid file descriptor open for
writing.
- EIO
- An error occurred during synchronization.
- EROFS, EINVAL
- fd is bound to a special file which does not support
synchronization.
In case the hard disk has write cache enabled, the data may not really be on
permanent storage when
fsync/
fdatasync return.
When an ext2 file system is mounted with the
sync option, directory
entries are also implicitly synced by
fsync.
On kernels before 2.4,
fsync on big files can be inefficient. An
alternative might be to use the
O_SYNC flag to
open(2).
POSIX.1b (formerly POSIX.4)
bdflush(2),
open(2),
sync(2)
mount(8),
sync(8),
update(8)