fsync oder fsync_range (Subroutine)

Zweck

Schreibt Änderungen in einer Datei in den permanenten Speicher

Bibliothek

Standard-C-Bibliothek (libc.a)

Syntax

#include <unistd.h>

int fsync ( FileDescriptor)
int FileDescriptor;

int fsync_range (FileDescriptor, how, start, length)
int FileDescriptor;
int how;
off_t start;
off_t length;

Beschreibung

Die Subroutine fsync bewirkt, dass alle geänderten Daten in der geöffneten Datei, die im Parameter FileDescriptor angegeben ist, im permanenten Speicher gespeichert werden. Bei der Rückkehr von der Subroutine FSync wurden alle Aktualisierungen im permanenten Speicher gespeichert.

Die Subroutine fsync_range bewirkt, dass alle geänderten Daten im angegebenen Bereich der offenen Datei, die im Parameter FileDescriptor angegeben ist, im permanenten Speicher gespeichert werden. Bei der Rückkehr aus der Subroutine fsync_range wurden alle Aktualisierungen im angegebenen Bereich im permanenten Speicher gespeichert.

Dieser Abschnitt bezieht sich auf veraltete Funktionen, die nur im JFS-Dateisystem verfügbar sind. Daten, die in eine Datei geschrieben werden, die ein Prozess für eine verzögerte Aktualisierung geöffnet hat (mit dem Flag O_DEFER ), werden erst dann in den permanenten Speicher geschrieben, wenn ein anderer Prozess einen fsync_range -oder FSync -Aufruf für diese Datei ausgibt oder eine synchrone Schreiben -Subroutine (mit dem Flag O_SYNC ) für die Datei ausführt. Beschreibungen der Flags O_DEFER und O_SYNC finden Sie in der Datei fcntl.h und in der Subroutine open .

Anmerkung: Die durch den Parameter FileDescriptor angegebene Datei muss zum Schreiben geöffnet sein, wenn die Subroutine fsync ausgegeben wird oder der Aufruf nicht erfolgreich ist. Diese Einschränkung wurde in BSD-Systemen nicht durchgesetzt. Die Subroutine fsync_range erfordert keinen Schreibzugriff.

Parameter

Element Beschreibung
FileDescriptor Ein gültiger, offener Dateideskriptor.
wie Geben Sie die Verarbeitungsmerkmale der Operation an.
O_SYNC
Die geänderten Daten in dem durch die < Anfang, Länge > -Parameter angegebenen Bereich werden in den Speicher geschrieben. Wenn Metadaten geändert werden, werden alle geänderten Benutzerdaten in den Speicher geschrieben. Alle Metadatenänderungen und die Dateiattribute einschließlich Zeitmarken werden ebenfalls in den Speicher geschrieben.
O_DSYNC
Die geänderten Daten in dem durch die < Anfang, Länge > -Parameter angegebenen Bereich werden in den Speicher geschrieben. Wenn geänderte Metadaten für die Datei vorhanden sind, werden die Metadaten ebenfalls geschrieben, wenn sie zum Lesen der Daten erforderlich sind. Andernfalls werden keine Metadaten aktualisiert.
O_NOCACHE
Die geänderten Daten werden wie beim Parameter O_DSYNC geschrieben. Die vollständigen Seiten in dem durch die Parameter < Anfang, Länge > angegebenen Bereich werden aus dem Speichercache entfernt. Die Seiten werden aus dem Cache entfernt, auch wenn sie nicht geändert werden. Die Operation funktioniert auch für Dateien, die nur zum Lesen geöffnet sind.
start Anfangsoffset der Datei.
Länge Länge oder null für alle Cachedaten.

Rückgabewerte

Nach erfolgreicher Beendigung gibt die Subroutine FSync den Wert 0 zurück. Andernfalls wird ein Wert von -1 zurückgegeben und die globale Variable errno wird gesetzt, um den Fehler anzuzeigen.

Nach erfolgreicher Beendigung gibt die Subroutine fsync_range den Wert 0 zurück. Andernfalls wird ein Wert von -1 zurückgegeben und die globale Variable errno wird gesetzt, um den Fehler anzuzeigen.

Fehlercodes

Die Subroutine FSync oder fsync_range ist nicht erfolgreich, wenn mindestens eine der folgenden Bedingungen zutrifft:

Element Beschreibung
EIO Beim Lesen aus oder Schreiben in das Dateisystem ist ein E/A-Fehler aufgetreten.
EBADF Der Parameter FileDescriptor ist kein gültiger Dateideskriptor, der zum Schreiben geöffnet ist.
EINVAL Die Datei ist keine reguläre Datei.
EINTR Die Subroutine wurde durch ein Signal unterbrochen.