Provided by: manpages-de-dev_1.4-1_all 

BEZEICHNUNG
fsync, fdatasync - den gepufferten Dateiinhalt mit einem Datenträger synchronisieren
ÜBERSICHT
#include <unistd.h>
int fsync(int fd);
int fdatasync(int fd);
Mit Glibc erforderliche Makros (siehe feature_test_macros(7)):
fsync(): _BSD_SOURCE || _XOPEN_SOURCE
|| /* seit Glibc 2.8: */ _POSIX_C_SOURCE >= 200112L
fdatasync(): _POSIX_C_SOURCE >= 199309L || _XOPEN_SOURCE >= 500
BESCHREIBUNG
fsync() überträgt alle veränderten gepufferten Daten (d.h. geänderte Seiten des Pufferzwischenspeichers)
von der Datei, auf die der Dateideskriptor fd weist, auf die Platte (oder ein anderes dauerhaftes
Speichermedium), so dass sämtliche Änderungsinformationen sogar nach einem Absturz oder Neustart des
Systems wieder hergestellt werden können. Dies beinhaltet das Schreiben oder Leeren eines
Plattenzwischenspeichers, falls vorhanden. Der Aufruf blockiert bis das Gerät meldet, dass die
Übertragung vollständig ist. Außerdem werden Metadaten-Informationen übertragen, die mit der Datei
verknüpft sind (siehe stat(2)).
Der Aufruf von fsync() garantiert nicht, dass der Verzeichniseintrag der Datei die Platte erreicht. Dafür
wird auch ein explizites fsync() auf einem Dateideskriptor des Verzeichnisses benötigt.
fdatasync() ist fsync() ähnlich, überträgt aber keine geänderten Metadaten, sofern diese Metadaten nicht
benötigt werden, um die korrekte Handhabung einer nachfolgenden Datenabfrage zu ermöglichen. Änderungen
an st_atime oder st_mtime (Zeit des letzten Zugriffs und Zeit der letzten Änderung; siehe stat(2))
erfordern zum Beispiel keine Übertragung, da sie nicht für die korrekte Handhabung eines nachfolgenden
Lesens der Daten benötigt werden. Andererseits würde die Änderung der Dateigröße (st_size, wie sie von
ftruncate(2) vorgenommen wird) ein Übertragen der Metadaten erfordern.
Das Ziel von fdatasync() ist die Verminderung der Plattenaktivität durch Anwendungen, die nicht das
Synchronisieren aller Metadaten mit der Platte erfordern.
RÜCKGABEWERT
Bei Erfolg gibt dieser Systemaufruf Null zurück. Bei einem Fehler wird -1 zurückgegeben und errno
entsprechend gesetzt.
FEHLER
EBADF fd ist kein gültiger offener Dateideskriptor.
EIO Während der Synchronisation ist ein Fehler aufgetreten.
EROFS, EINVAL
fd ist mit einer Spezialdatei verbunden, die keine Synchronisation unterstützt.
KONFORM ZU
4.3BSD, POSIX.1-2001.
VERFÜGBARKEIT
Auf POSIX-Systemen, auf denen fdatasync() verfügbar ist, ist _POSIX_SYNCHRONIZED_IO in <unistd.h> als ein
Wert größer als 0 definiert. (Siehe auch sysconf(3).)
ANMERKUNGEN
Auf einigen UNIX-Systemen (aber nicht Linux) muss fd ein schreibbarer Dateideskriptor sein.
Bis einschließlich Linux 2.2 entspricht fdatasync() fsync() und steigert daher nicht die Leistung.
Die fsync()-Implementierungen in älteren Kerneln oder weniger benutzten Dateisystemen wissen nicht, wie
Plattenzwischenspeicher geleert werden. In diesen Fällen müssen Plattenzwischenspeicher mittels hdparm(8)
oder sdparm(8) deaktiviert werden, um sicheres Funktionieren zu garantieren.
SIEHE AUCH
bdflush(2), open(2), sync(2), sync_file_range(2), hdparm(8), mount(8), sync(8), update(8)
KOLOPHON
This page is part of release 3.54 of the Linux man-pages project. A description of the project, and
information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/.
ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Chris Leick <c.leick@vollbio.de> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer
bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an
<debian-l10n-german@lists.debian.org>.
Linux 27. Februar 2012 FSYNC(2)