sync(2)

NAZWA
sync, syncfs - zrzuca bufory systemu pliku na dysk

BIBLIOTEKA
Standardowa biblioteka C (libc, -lc)

SKŁADNIA
#include <unistd.h>

void sync(void);

int syncfs(int fd);

    Wymagane ustawienia makr biblioteki glibc (patrz feature_test_macros(7)):

sync():
    _XOPEN_SOURCE >= 500
        || /* Od glibc 2.19: */ _DEFAULT_SOURCE
        || /* glibc <= 2.19: */ _BSD_SOURCE

syncfs():
    _GNU_SOURCE

OPIS
sync() wymusza fizyczne zapisanie w systemach plików wszystkich oczekujących modyfikacji metadanych systemów plików i zbuforowanych danych plików.

syncfs() jest podobny do sync(), ale synchronizuje tylko system plików zawierający plik, do którego odnosi się otwarty deskryptor pliku fd.

WARTOŚĆ ZWRACANA
Po pomyślnym zakończeniu syncfs() zwraca zero, po błędzie zwraca -1 i ustawia errno, wskazując błąd.

BŁĘDY
sync() zawsze kończy się pomyślnie.

syncfs() może się nie powieść co najmniej z poniższych powodów:

EBADF
    fd nie jest prawidłowym deskryptorem pliku.

EIO Wystąpił błąd podczas synchronizacji. Błąd może odnosić się do danych zapisywanych do jakiegoś pliku w systemie plików albo do metadanych powiązanych z samym systemem plików.

ENOSPC
    Wyczerpano miejsce na dysku podczas synchronizacji.

ENOSPC
EDQUOT
    Dane zapisano do pliku na NFS lub na innym systemie plików, który nie przydziela miejsca w momencie wywołania systemowego write(2) i któryś z poprzednich zapisów nie powiódł się ze względu na brak miejsca na dysku.

WERSJE
Zgodnie ze standardowymi wskazaniami (tj. POSIX.1), sync() szereguje zapisy, lecz może powrócić przed dokonaniem fizycznego zapisu. Mimo to Linux czeka na zakończenie operacji wejścia/wyjścia i dlatego sync() lub syncfs() dają te same gwarancje, co wywołanie fsync(2) na każdym pliku w systemie lub odpowiednio w systemie plików.

STANDARDY

sync()
    POSIX.1-2024.

syncfs()
    Linux.

HISTORIA

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

syncfs()
    Linux 2.6.39, glibc 2.14.

Począwszy od glibc 2.2.2 prototyp wywołania sync() w Linuksie wygląda jak powyżej, zgodnie z różnymi standardami. W wersji 2.2.1 i wcześniejszych biblioteki glibc było to "int sync(void)", a sync() zawsze zwracało 0.

W głównej gałęzi jądra, w wersjach wcześniejszych niż Linux 5.8, syncfs() zawodziło tylko, gdy podano nieprawidłowy deskryptor pliku (EBADF). Od Linuksa 5.8, syncfs() zgłosi błąd również wówczas, gdy nie uda się zapisać jednego lub więcej i-węzłów, od ostatniego wywołania syncfs().

USTERKI
Przed Linuksem 1.3.20, Linux nie czekał na zakończenie operacji wejścia/wyjścia przed powróceniem z tego wywołania systemowego.

ZOBACZ TAKŻE
sync(1), fdatasync(2), fsync(2)

TŁUMACZENIE
Tłumaczenie niniejszej strony podręcznika: Przemek Borys <pborys@dione.ids.pl>, Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl>, Robert Luberda <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 (https://www.gnu.org/licenses/gpl-3.0.html) lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.