Sous-routine fsync ou fsync_range

Objectif

Ecrit les modifications dans un fichier en mémoire permanente.

Bibliothèque

Bibliothèque C standard (libc.a)

Syntaxe

#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;

Descriptif

La sous-routine fsync entraîne la sauvegarde de toutes les données modifiées dans le fichier ouvert spécifié par le paramètre FileDescriptor dans la mémoire permanente. En retour de la sous-routine Fsync , toutes les mises à jour ont été sauvegardées sur le stockage permanent.

La sous-routine fsync_range entraîne la sauvegarde dans la mémoire permanente de toutes les données modifiées dans la plage spécifiée du fichier ouvert spécifiée par le paramètre FileDescriptor . En retour de la sous-routine Plage fsync_range , toutes les mises à jour de la plage spécifiée ont été sauvegardées sur le stockage permanent.

Ce paragraphe fait référence à la fonction obsolète disponible uniquement dans le système de fichiers JFS. Les données écrites dans un fichier qu'un processus a ouvert pour mise à jour différée (avec l'indicateur O_REPORT ) ne sont pas écrites dans un stockage permanent tant qu'un autre processus n'émet pas d'appel Plage fsync_range ou Fsync sur ce fichier ou qu'il exécute une sous-routine écrire synchrone (avec l'indicateur _SYNC ) sur ce fichier. Voir le fichier fcntl.h et la sous-routine open pour la description des indicateurs O_DEFER et O_SYNC respectivement.

Remarque: Le fichier identifié par le paramètre FileDescriptor doit être ouvert en écriture lorsque la sous-routine fsync est émise ou que l'appel échoue. Cette restriction n'a pas été appliquée dans les systèmes BSD. Le sous-programme Plage fsync_range ne requiert pas d'accès en écriture.

Paramètres

Article Descriptif
FileDescriptor Un descripteur de fichier ouvert valide.
comment faire Indiquez les caractéristiques de gestion de l'opération.
_SYNC
Les données modifiées dans la plage spécifiée par les paramètres < début, longueur > sont écrites dans le stockage. Si des métadonnées sont modifiées, toutes les données utilisateur modifiées sont écrites dans le stockage. Toutes les modifications de métadonnées et les attributs de fichier, y compris les horodatages, sont également écrits dans le stockage.
O_DSYNC
Les données modifiées dans la plage spécifiée par les paramètres < début, longueur > sont écrites dans le stockage. S'il existe des métadonnées modifiées pour le fichier, les métadonnées sont également écrites s'il est nécessaire de les lire. Sinon, aucune mise à jour des métadonnées n'a lieu.
O_NOCACHE
Les données modifiées sont écrites comme avec le paramètre O_DSYNC . Les pages complètes de la plage spécifiée par les paramètres < début, longueur > sont supprimées du cache de mémoire. Les pages sont supprimées du cache même si elles ne sont pas modifiées. L'opération fonctionne également sur des fichiers ouverts uniquement pour la lecture.
DÉBUT Décalage du fichier de départ.
Length Longueur ou zéro pour toutes les données de cache.

Valeurs renvoyées

Une fois l'exécution terminée, la sous-routine Fsync renvoie une valeur de 0. Dans le cas contraire, la valeur -1 est renvoyée et la variable globale errno est définie pour indiquer l'erreur.

Une fois l'exécution terminée, la sous-routine Plage fsync_range renvoie une valeur de 0. Dans le cas contraire, la valeur -1 est renvoyée et la variable globale errno est définie pour indiquer l'erreur.

Codes d'erreur

La sous-routine Fsync ou Plage fsync_range échoue si une ou plusieurs des opérations suivantes sont vraies:

Article Descriptif
EIO Une erreur d'E-S s'est produite lors de la lecture ou de l'écriture dans le système de fichiers.
EBADF Le paramètre FileDescriptor n'est pas un descripteur de fichier valide ouvert en écriture.
EINVAL Le fichier n'est pas un fichier standard.
EINTR Le sous-programme a été interrompu par un signal.