Provided by: manpages-fr-dev_4.23.1-1_all bug

NOM

       fsync, fdatasync - Synchroniser un fichier en mémoire avec le disque

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #include <unistd.h>

       int fsync(int fd);

       int fdatasync(int fd);

   Exigences    de    macros    de   test   de   fonctionnalités   pour   la   glibc   (consulter
   feature_test_macros(7)) :

       fsync() :
           Glibc 2.16 et supérieures :
               Aucune macro de fonction de test à définir
           Glibc inférieure ou égale à 2.15 :
               _BSD_SOURCE || _XOPEN_SOURCE
                   || /* Depuis la glibc 2.8 : */ _POSIX_C_SOURCE >= 200112L

       fdatasync() :
           _POSIX_C_SOURCE >= 199506L || _XOPEN_SOURCE >= 500

DESCRIPTION

       fsync() transfère  (« flush »)  toutes  les  données  modifiées  (c'est-à-dire  les  pages
       modifiées  du  cache mémoire) du fichier correspondant au descripteur fd sur le disque (ou
       autre périphérique de stockage permanent)  afin  que  toutes  les  informations  modifiées
       puissent  être  récupérées  même  après  un  plantage  ou  un redémarrage du système. Cela
       nécessite d'écrire ou de purger le cache du disque, s'il  en  existe  un.  L'appel  bloque
       jusqu'à ce que le périphérique indique que le transfert est terminé.

       Outre  les  données  du  fichier,  fsync()  transfère  aussi les méta-données associées au
       fichier (voir inode(7)).

       Un appel à fsync()  n'assure  pas  obligatoirement  que  les  informations  concernant  le
       répertoire  aient  atteint  le  disque.  Pour  cela,  un appel explicite de fsync() sur le
       descripteur de fichier du répertoire est nécessaire.

       fdatasync() est similaire à fsync(), mais ne transfère pas les méta‐données, sauf  si  ces
       informations  sont  nécessaires à une récupération ultérieure de données. Par exemple, les
       modifications de st_atime ou st_mtime (respectivement, heure du dernier  accès  et  de  la
       dernière modification ; consultez inode(7)) ne sont pas transférées, car elles ne sont pas
       nécessaires à une lecture de données ultérieure.  En  revanche,  une  modification  de  la
       taille  du  fichier  (st_size),  par  exemple  effectuée  par  ftruncate(2),  nécessite un
       transfert des méta‐données.

       Le but de fdatasync() est de réduire l'activité du disque pour les applications qui  n'ont
       pas besoin d'une parfaite synchronisation des méta‐données avec le disque.

VALEUR RENVOYÉE

       Ces  appels  système  renvoient 0 en cas de succès, ou -1 en cas d'échec, auquel cas errno
       est positionné pour indiquer l'erreur.

ERREURS

       EBADF  Le descripteur de fichier fd est non valable.

       EINTR  La fonction a été interrompue par un signal ; consultez signal(7).

       EIO    Une erreur s'est produite pendant la synchronisation. Cette erreur peut provenir de
              l'écriture  de  données  sur  un autre descripteur de fichier dans le même fichier.
              Depuis Linux 4.13, les erreurs survenues pendant l'écriture sont signalées  à  tous
              les  descripteurs  de fichier qui pourraient avoir écrit des données à l'origine de
              l'erreur. Certains systèmes de fichiers (comme NFS) gardent le suivi du descripteur
              de  fichier d'où proviennent les données et donnent un retour plus précis. D'autres
              systèmes de fichiers (comme la plupart des locaux) signaleront l'erreur à tous  les
              descripteurs de fichier ouverts sur le fichier quand l'erreur a été enregistrée.

       ENOSPC L'espace disque a été épuisé pendant la synchronisation.

       EROFS
       EINVAL fd  est  associé à un type de fichier spécial (comme un tube, un FIFO ou un socket)
              qui ne prend pas en charge la synchronisation.

       ENOSPC
       EDQUOT fd est associé à un fichier sur un système de fichiers NFS ou  autre  qui  n'alloue
              pas  d'espace  au  moment  de l'appel système write(2) et des écritures passées ont
              échoué à cause d'un espace de stockage insuffisant.

VERSIONS

       Sur les systèmes POSIX sur lesquels fdatasync() est disponible,  la  constante  symbolique
       _POSIX_SYNCHRONIZED_IO  est définie dans <unistd.h> comme étant une valeur supérieure à 0.
       (Consultez aussi sysconf(3).)

STANDARDS

       POSIX.1-2008.

HISTORIQUE

       POSIX.1-2001, 4.2BSD.

       Sous Linux 2.2 et précédents, fdatasync() est équivalent  à  fsync(),  et  n'apporte  donc
       aucun avantage en performance.

       Les  implémentations  de  la  fonction  fsync()  dans  les vieux noyaux et les systèmes de
       fichiers les moins utilisés ne savent pas comment vider les caches  du  disque.  Dans  ces
       situations,  les caches du disque ont besoin d'être désactivés avec hdparm(8) ou sdparm(8)
       afin de garantir la sûreté des opérations.

       Sous AT&T UNIX System V Release 4, fd a besoin d'être ouvert en écriture. Cela est en soit
       incompatible  avec  l'interface  d'origine  de BSD et interdit par POSIX, mais néanmoins a
       survécu dans HP-UX et AIX.

VOIR AUSSI

       sync(1), bdflush(2), open(2), posix_fadvise(2), pwritev(2),  sync(2),  sync_file_range(2),
       fflush(3), fileno(3), hdparm(8), mount(8)

TRADUCTION

       La  traduction  française  de  cette  page  de  manuel  a  été créée par Christophe Blaess
       <https://www.blaess.fr/christophe/>, Stéphan  Rafin  <stephan.rafin@laposte.net>,  Thierry
       Vignaud  <tvignaud@mandriva.com>,  François Micaux, Alain Portal <aportal@univ-montp2.fr>,
       Jean-Philippe   Guérard   <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)    <jean-
       luc.coulon@wanadoo.fr>,    Julien    Cristau    <jcristau@debian.org>,    Thomas   Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin
       Duneau  <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis
       Barbier <barbier@debian.org>, David Prévot <david@tilapin.org>  et  Jean-Philippe  MENGUAL
       <jpmengual@debian.org>

       Cette  traduction  est  une  documentation libre ; veuillez vous reporter à la GNU General
       Public  License  version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   concernant   les
       conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un
       message à ⟨debian-l10n-french@lists.debian.org⟩.