Provided by: manpages-fr-dev_4.21.0-2_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.

STANDARDS

       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)

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

Pages du manuel de Linux 6.03                    5 février 2023                                         fsync(2)