Provided by: manpages-fr-dev_4.15.0-9_all bug

NOM

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

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 and later:
               No feature test macros need be defined
           Glibc up to and including 2.15:
               _BSD_SOURCE || _XOPEN_SOURCE
                   || /* Since glibc 2.8: */ _POSIX_C_SOURCE >= 200112L

       fdatasync():
           _POSIX_C_SOURCE >= 199309L || _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

       On  success, these system calls return zero. On error, -1 is returned, and errno is set to
       indicate the error.

ERREURS

       EBADF  Le descripteur de fichier fd n’est pas acceptable.

       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.

CONFORMITÉ

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

       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).)

NOTES

       Sur certains systèmes UNIX (mais pas Linux),  fd  doit  être  un  descripteur  de  fichier
       accessible en écriture.

       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.

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)

COLOPHON

       Cette page fait partie de la publication 5.13 du projet man-pages Linux.  Une  description
       du  projet et des instructions pour signaler des anomalies et la dernière version de cette
       page peuvent être trouvées à l'adresse https://www.kernel.org/doc/man-pages/.

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⟩.