table of contents
SYNC(2) | Руководство программиста Linux | SYNC(2) |
ИМЯ¶
sync, syncfs - записывает буферный кэш на диск
ОБЗОР¶
#include <unistd.h>
void sync(void);
int syncfs(int fd);
Требования
макроса
тестирования
свойств
для glibc (см.
feature_test_macros(7)):
sync():
syncfs():
ОПИСАНИЕ¶
Вызов sync() приводит к записи в файловую систему всех изменений данных и метаданных файла, хранящихся в буфере.
Вызов syncfs() подобен sync(), но синхронизирует только файловую систему, содержащую файл, на который указывает открытый файловый дескриптор fd.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ¶
При нормальном завершении работы syncfs() возвращает 0. В случае ошибки возвращается -1, а errno устанавливается в соответствующее значение.
ОШИБКИ¶
Вызов sync() всегда выполняется без ошибок.
Вызов syncfs() может завершиться с ошибкой, по крайней мере, по следующей причине:
- EBADF
- fd не является правильным файловым дескриптором.
ВЕРСИИ¶
Системный вызов syncfs() впервые появился в Linux 2.6.39; поддержка в glibc добавлена в версии 2.14.
СООТВЕТСТВИЕ СТАНДАРТАМ¶
sync(): SVr4, 4.3BSD, POSIX.1-2001.
syncfs() есть только в Linux.
ЗАМЕЧАНИЯ¶
Начиная с glibc 2.2.2 Linux-прототип sync() стал соответствовать различным стандартам. В libc4, libc5 и glibc до версии 2.2.1, он объявлялся как «int sync(void)» и вызов sync() всегда возвращал 0.
ДЕФЕКТЫ¶
В соответствии со стандартной спецификацией (например POSIX.1-2001), sync() только планирует запись, и может закончить работу до того как запись будет на самом деле произведена. Однако в Linux, начиная с версии 1.3.20, выполняется ожидание завершения записи (это всё равно не гарантирует целостность данных: современные диски оснащаются большими кэшами).
СМОТРИТЕ ТАКЖЕ¶
2012-05-04 | Linux |