sync(2) | System Calls Manual | sync(2) |
sync, syncfs - записывает кэши файловых систем на диск
Standard C library (libc, -lc)
#include <unistd.h>
void sync(void);
int syncfs(int fd);
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() может завершиться с ошибкой, по крайней мере, по следующей причине:
syncfs() first appeared in Linux 2.6.39; library support was added in 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() при вызове для каждого файла в системе или файловой системы, соответственно.
In mainline kernel versions prior to Linux 5.8, syncfs() will fail only when passed a bad file descriptor (EBADF). Since Linux 5.8, syncfs() will also report an error if one or more inodes failed to be written back since the last syncfs() call.
Before Linux 1.3.20, Linux did not wait for I/O to complete before returning.
sync(1), fdatasync(2), fsync(2)
Русский перевод этой страницы руководства был сделан 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.
5 февраля 2023 г. | Linux man-pages 6.03 |