table of contents
sync(2) | System Calls Manual | sync(2) |
BEZEICHNUNG¶
sync, syncfs - Zwischenspeicher der Dateisysteme auf die Festplatte schreiben
BIBLIOTHEK¶
Standard-C-Bibliothek (libc, -lc)
ÜBERSICHT¶
#include <unistd.h>
void sync(void);
int syncfs(int dd);
sync():
_XOPEN_SOURCE >= 500
|| /* Seit Glibc 2.19: */ _DEFAULT_SOURCE
|| /* Glibc <= 2.19: */ _BSD_SOURCE
syncfs():
_GNU_SOURCE
BESCHREIBUNG¶
sync() bewirkt, dass alle anhängenden Änderungen an Dateisystemmetadaten und zwischengespeicherten Inhalten von Dateien auf die unterliegenden Dateisysteme geschrieben werden.
syncfs() verhält sich wie sync(), synchronisiert aber nur das Dateisystem, das die Datei enthält, auf die der offene Dateideskriptor dd verweist.
RÜCKGABEWERT¶
syncfs() gibt bei Erfolg 0 zurück. Bei Fehlern gibt es -1 zurück und setzt errno, um den Fehler anzuzeigen.
FEHLER¶
sync() ist immer erfolgreich.
syncfs() kann mindestens wegen der folgenden Gründe fehlschlagen:
- EBADF
- dd ist kein zulässiger Dateideskriptor.
- EIO
- Während der Synchronisierung trat ein Fehler auf. Dieser Fehler kann in den in eine beliebige Datei auf dem Dateisystem geschriebenen Daten oder in den Metadaten des Dateisystems selbst liegen.
- ENOSPC
- Während der Synchronisierung war der Plattenplatz ausgeschöpft.
- ENOSPC
- EDQUOT
- Die Daten wurden in eine Datei auf einem NFS- oder einem anderen Dateisystem geschrieben, welches zum Zeitpunkt des write(2)-Systemaufrufs keinen Plattenplatz zugewiesen hat und vorherige Schreibvorgänge wegen unzureichenden Plattenplatzes fehlschlugen.
VERSIONEN¶
Nach den Vorgaben der Standards (z.B. POSIX.1-2001) kann sync() den Schreibvorgang initiieren, aber vor dem eigentlichen Schreibvorgang zurückkehren. Allerdings wartet Linux auf den Abschluss der E/A und daher stellen sync() und syncfs() die gleichen Garantien wie der Aufruf von fsync() nach jeder Datei im System oder entsprechend Dateisystem bereit.
STANDARDS¶
GESCHICHTE¶
Seit Glibc 2.2.2 hat der Linux-Prototyp für sync() die oben beschriebene Form, die den diversen Standards folgt. In Glibc bis 2.2.1 war der Prototyp »int sync(void)« und sync() gab immer 0 zurück.
In Mainline-Linux-Versionen vor 5.8 schlägt syncfs() nur dann fehl, wenn ein schlechter Dateideskriptor (EBADF) übergeben wurde. Seit Linux 5.8 meldet syncfs() auch einen Fehler, wenn das Zurückschreiben eines oder mehrerer Inodes seit dem letzten syncfs()-Systemaufruf fehlschlug.
FEHLER¶
Vor Version 1.3.20 wartete Linux vor der Rückkehr nicht auf den Abschluss der E/A.
SIEHE AUCH¶
ÜBERSETZUNG¶
Die deutsche Übersetzung dieser Handbuchseite wurde von Wolfgang Jung <woju@keep.in-berlin.de>, Martin Eberhard Schauer <Martin.E.Schauer@gmx.de>, Mario Blättermann <mario.blaettermann@gmail.com> und Dr. Tobias Quathamer <toddy@debian.org> 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 die Mailingliste der Übersetzer.
2. Mai 2024 | Linux man-pages (unveröffentlicht) |