sync(2) System Calls Manual sync(2) NAZWA sync, syncfs - zrzuca bufory systemu pliku na dysk BIBLIOTEKA Standardowa biblioteka C (libc, -lc) SKLADNIA #include 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 plikow wszystkich oczekujacych modyfikacji metadanych systemow plikow i zbuforowanych danych plikow. syncfs() jest podobny do sync(), ale synchronizuje tylko system plikow zawierajacy plik, do ktorego odnosi sie otwarty deskryptor pliku fd. WARTOSC ZWRACANA Po pomyslnym zakonczeniu syncfs() zwraca zero, po bledzie zwraca -1 i ustawia errno, wskazujac blad. BLEDY sync() zawsze konczy sie pomyslnie. syncfs() moze sie nie powiesc co najmniej z ponizszych powodow: EBADF fd nie jest prawidlowym deskryptorem pliku. EIO Wystapil blad podczas synchronizacji. Blad moze odnosic sie do danych zapisywanych do jakiegos pliku w systemie plikow albo do metadanych powiazanych z samym systemem plikow. ENOSPC Wyczerpano miejsce na dysku podczas synchronizacji. ENOSPC EDQUOT Dane zapisano do pliku na NFS lub na innym systemie plikow, ktory nie przydziela miejsca w momencie wywolania systemowego write(2) i ktorys z poprzednich zapisow nie powiodl sie ze wzgledu na brak miejsca na dysku. WERSJE Zgodnie ze standardowymi wskazaniami (np. POSIX.1-2001), sync() szereguje zapisy, lecz moze powrocic przed dokonaniem fizycznego zapisu. Mimo to Linux czeka na zakonczenie operacji wejscia/wyjscia i dlatego sync() lub syncfs() daja te same gwarancje, co wywolanie fsync(2) na kazdym pliku w systemie lub odpowiednio w systemie plikow. STANDARDY sync() POSIX.1-2008. syncfs() Linux. HISTORIA sync() POSIX.1-2001, SVr4, 4.3BSD. syncfs() Linux 2.6.39, glibc 2.14. Poczawszy od glibc 2.2.2 prototyp wywolania sync() w Linuksie wyglada jak powyzej, zgodnie z roznymi standardami. W wersji 2.2.1 i wczesniejszych biblioteki glibc bylo to "int sync(void)", a sync() zawsze zwracalo 0. W glownej galezi jadra, w wersjach wczesniejszych niz Linux 5.8, syncfs() zawodzilo tylko, gdy podano nieprawidlowy deskryptor pliku (EBADF). Od Linuksa 5.8, syncfs() zglosi blad rowniez wowczas, gdy nie uda sie zapisac jednego lub wiecej i-wezlow, od ostatniego wywolania syncfs(). USTERKI Przed Linuksem 1.3.20, Linux nie czekal na zakonczenie operacji wejscia/wyjscia przed powroceniem z tego wywolania systemowego. ZOBACZ TAKZE sync(1), fdatasync(2), fsync(2) TLUMACZENIE Autorami polskiego tlumaczenia niniejszej strony podrecznika sa: Przemek Borys , Andrzej Krzysztofowicz , Robert Luberda i Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . Linux man-pages 6.8 2 maja 2024 r. sync(2)