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