Scroll to navigation

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

ИМЯ

sync, syncfs - записывает кэши файловых систем на диск

СИНТАКСИС

#include <unistd.h>

void sync(void);

int syncfs(int fd);


Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

sync():

_XOPEN_SOURCE >= 500
|| /* начиная с glibc 2.19: */ _DEFAULT_SOURCE
|| /* версии glibc <= 2.19: */ _BSD_SOURCE

syncfs():

_GNU_SOURCE

ОПИСАНИЕ

Вызов sync() приводит к записи в файловую систему всех отложенных изменений метаданных файловой системы и кэшированных файловых данных.

Вызов syncfs() подобен sync(), но синхронизирует только файловую систему, содержащую файл, на который указывает открытый файловый дескриптор fd.

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

При нормальном завершении работы syncfs() возвращает 0. В случае ошибки возвращается -1, а errno устанавливается в соответствующее значение.

ОШИБКИ

Вызов sync() всегда выполняется без ошибок.

Вызов syncfs() может завершиться с ошибкой, по крайней мере, по следующей причине:

Значение fd не является правильным файловым дескриптором.

ВЕРСИИ

Системный вызов syncfs() впервые появился в Linux 2.6.39; поддержка в glibc добавлена в версии 2.14.

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

sync(): POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.

syncfs() есть только в Linux.

ЗАМЕЧАНИЯ

Начиная с glibc 2.2.2 Linux-прототип sync() стал соответствовать различным стандартам. В glibc 2.21 и старее он объявлялся как «int sync(void)» и вызов sync() всегда возвращал 0.

В соответствии со стандартной спецификацией (например POSIX.1-2001), sync() только планирует запись, и может закончить работу до того как запись будет на самом деле произведена. Однако в Linux выполняется ожидание завершения операций ввода-вывода и поэтому sync() или syncfs() предоставляют такие же гарантии как fsync при вызове для каждого файла в системе или файловой системы, соответственно.

ДЕФЕКТЫ

До версии 1.3.20 Linux не ждёт завершения операций ввода-вывода перед возвращением.

СМ. ТАКЖЕ

sync(1), fdatasync(2), fsync(2)

ЗАМЕЧАНИЯ

Эта страница является частью проекта Linux man-pages версии 4.16. Описание проекта, информацию об ошибках и последнюю версию этой страницы можно найти по адресу https://www.kernel.org/doc/man-pages/.

ПЕРЕВОД

Русский перевод этой страницы руководства был сделан Alexander Golubev <fatzer2@gmail.com>, Azamat Hackimov <azamat.hackimov@gmail.com>, Hotellook, Nikita <zxcvbnm3230@mail.ru>, Spiros Georgaras <sng@hellug.gr>, Vladislav <ivladislavefimov@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks@lists.sourceforge.net.

15 сентября 2017 г. Linux