Scroll to navigation

FSYNC(2) Руководство программиста Linux FSYNC(2)

ИМЯ

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

ОБЗОР

#include <unistd.h>

int fsync(int fd);

int fdatasync(int fd);

ОПИСАНИЕ

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

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

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

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

ОШИБКИ

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

ЗАМЕЧАНИЯ

В случае если у жёсткого диска разрешена запись кэша, данные могут фактически не быть сохранены после выполнения 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

2001-04-18 Linux 1.3.85