Provided by: manpages-de-dev_1.11-1_all bug

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

       POSIX.1-2001, POSIX.1-2008, 4.3BSD.

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(1)

KOLOPHON

       Diese Seite  ist  Teil  der  Veröffentlichung  4.04  des  Projekts  Linux-man-pages.  Eine
       Beschreibung  des  Projekts,  Informationen,  wie  Fehler gemeldet werden können sowie die
       aktuelle Version dieser Seite finden sich unter http://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

       Die deutsche Übersetzung dieser Handbuchseite wurde von Chris  Leick  <c.leick@vollbio.de>
       und Mario Blättermann <mario.blaettermann@gmail.com> 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>.