#include <unistd.h> int fdatasync(int fildes);
The fdatasync() function forces all currently queued I/O operations associated with the file indicated by file descriptor fildes to the synchronized I/O completion state.
The functionality is as described for fsync(3C) (with the symbol _XOPEN_REALTIME defined), with the exception that all I/O operations are completed as defined for synchronised I/O data integrity completion.
If successful, the fdatasync() function returns 0. Otherwise, the function returns −1 and sets errno to indicate the error. If the fdatasync() function fails, outstanding I/O operations are not guaranteed to have been completed.
The fdatasync() function will fail if:
The fildes argument is not a valid file descriptor open for writing.
The system does not support synchronized I/O for this file.
The function fdatasync() is not supported by the system.
See attributes(5) for descriptions of the following attributes: