Provided by:
manpages-pl-dev_20051117-1_all 
NAZWA
fsync, fdatasync - synchronizacja pełnego wewnątrzrdzeniowego stanu
pliku z zapisanym na dysku
SKŁADNIA
#include <unistd.h>
int fsync(int fd);
int fdatasync(int fd);
OPIS
fsync kopiuje wszystkie wewnątrzrdzeniowe części pliku na dysk i czeka
na zgłoszenie przez urządzenie, że wszystkie dane znajdują się na
trwałym nośniku. Aktualizuje również informacje statystyczne o
metadanych. Nie gwarantuje, że wpis w katalogu zawierający informacje o
pliku również zostanie zapisany na dysku. Aby to osiągnąć, wymagane
jest jawne wywołanie fsync dla deskryptora katalogu.
fdatasync robi to samo, co fsync, lecz zapisuje jedynie dane
użytkownika, bez metadanych, takich jak mtime czy atime.
WARTOŚĆ ZWRACANA
Po pomyślnym zakończeniu zwracane jest zero. Po błędzie zwracane jest
-1 i odpowiednio ustawiane errno.
BŁĘDY
EBADF fd nie jest prawidłowym deskryptorem pliku otwartego do zapisu.
EROFS, EINVAL
fd jest powiązany ze specjalnym plikiem, który nie wspiera
synchronizacji.
EIO Pojawił się błąd podczas synchronizacji.
UWAGI
W sytuacji, gdy twardy dysk ma włączone buforowanie zapisów, dane mogą
w rzeczywistości nie zostać zapisane na trwałym nośniku do chwili
powrotu z fsync/fdatasync.
Gdy system plików ext2 jest zamontowany z opcją sync, wpisy w
katalogach są również jawnie zapisywane przez fsync.
W kernelach przed 2.4, fsync na dużych plkach mogło być niewydajne.
Alternatywą mogło być używanie znacznika O_SYNC dla open(2).
ZGODNE Z
POSIX.1b (wcześniej POSIX.4)
ZOBACZ TAKŻE
bdflush(2), open(2), sync(2), mount(8), update(8), sync(8)