Provided by: manpages-fr-dev_4.26.0-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 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.9.1                     2 mai 2024                                           fsync(2)