Provided by: manpages-ru_0.98-4_all bug

ИМЯ

       fsync - синхронизирует состояние файла в памяти с состоянием на диске

ОБЗОР

       #include <unistd.h>

       int fsync(int fd);

       int fdatasync(int fd);

ОПИСАНИЕ

       fsync  копирует на диск все части файла, находящиеся в памяти и ожидает
       пока устройство скажет, что все  эти  части  сохранены.   Также  данный
       вызов   обновляет   информацию  о  состоянии  метаданных.  Это  создаёт
       уверенность,  что  запись  в  каталоге  содержит  файл,  который  также
       находится  на диске.  Чтобы проделать это явно вызову fsync также нужен
       файловый дескриптор каталога.

       fdatasync делает тоже самое что и fsync , но сбрасывает  только  данный
       пользователя, а не метаданные, такие как mtime или atime.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       В  случае успеха возвращается ноль.  При ошибке возвращается -1 и errno
       устанавливается соответствующим образом.

ОШИБКИ

       EBADF   fd не является дескриптором файла, открытого для записи.

       EROFS, EINVAL
               fd  связан  со  специальным  файлом,  который  не  поддерживает
               синхронизацию.

       EIO     Во время синхронизации произошла ошибка.

ЗАМЕЧАНИЯ

       В  случае  если  у  жёсткого  диска разрешена запись кэша, данные могут
       фактически не быть сохранены после выполнения fsync/fdatasync.

       Когда файловая система ext2 монтируется с  опцией  sync  ,  при  вызове
       fsync также неявно синхронизируются записи в каталогах.

       В  ядрах  до  2.4,  fsync на больших файлах может быть неэффективным. В
       качестве альтернативы можно использовать флаг O_SYNC в вызове  open(2).

СООТВЕТСТВИЕ СТАНДАРТАМ

       POSIX.1b (когда-то назывался POSIX.4)

СМОТРИ ТАКЖЕ

       bdflush(2), open(2), sync(2), update(8), sync(8) +.  mount(8),

ПЕРЕВОД

       Перевёл с английского Виктор Вислобоков <corochoone@perm.ru> 2003