oracular (2) fsync.2.gz

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