Provided by: manpages-fr-dev_3.32d0.2p4-1_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   (consultez
   feature_test_macros(7)) :

       fsync() : _BSD_SOURCE || _XOPEN_SOURCE
                || /* depuis la glibc 2.8 : */ _POSIX_C_SOURCE >= 200112L
       fdatasync() : _POSIX_C_SOURCE >= 199309L || _XOPEN_SOURCE >= 500

DESCRIPTION

       fsync() transfère toutes les données modifiées du fichier correspondant au descripteur  fd
       sur  le  disque  (ou  autre  périphérique  de stockage permanent) où ce fichier se trouve.
       L'appel bloque jusqu'à ce que le périphérique indique que le  transfert  est  terminé.  Il
       transfère aussi les informations d'état du fichier (consultez stat(2)).

       Un  appel  à  fsync()  ne  s'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  (heures  de  dernier  accès  et  de  dernière
       modification, respectivement ; consultez stat(2)) ne sont pas transférées,  car  elles  ne
       sont   pas  nécessaires  à  une  lecture  de  données  ultérieurement.  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é 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
       contient le code d'erreur.

ERREURS

       EBADF  fd n'est pas un descripteur de fichier valable ouvert en écriture.

       EIO    Une erreur s'est produite pendant la synchronisation.

       EROFS, EINVAL
              fd est associé à un type de fichier spécial qui ne permet pas de synchronisation.

CONFORMITÉ

       BSD 4.3, POSIX.1-2001.

DISPONIBILITÉ

       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

       Les applications accédant à des bases de données ou des fichiers journaux écrivent souvent
       de petits fragments de données (une ligne de  texte  par  exemple)  et  appellent  fsync()
       immédiatement pour être sûr du stockage sur disque. Malheureusement, fsync() va déclencher
       deux écritures : une pour les données et une pour mettre à jour la  date  de  modification
       enregistrée   dans  l'inœud.  Si  la  date  de  modification  n'est  pas  importante  pour
       l'application, alors fdatasync peut être invoquée pour éviter l'accès inutile à l'inœud.

       Si le disque dur dispose d'un tampon en  écriture,  les  données  ne  sont  peut‐être  pas
       enregistrées définitivement lorsque fsync() ou fdatasync() se termine.

       Lorsqu'un  système  de  fichiers  ext2  est  monté  avec  l'option  sync,  les  entrées de
       répertoires sont également synchronisées lors de l'appel à fsync().

       Sur les noyaux antérieurs au 2.4, fsync() peut être sensiblement inefficace sur  les  gros
       fichiers.  Une  autre  solution  peut  être  l'utilisation  de  l'attribut  O_SYNC lors de
       l'invocation de open(2).

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

VOIR AUSSI

       bdflush(2), open(2), sync(2), sync_file_range(2), hdparm(8), mount(8), sync(8), update(8)

COLOPHON

       Cette  page  fait partie de la publication 3.32 du projet man-pages Linux. Une description
       du projet et des  instructions  pour  signaler  des  anomalies  peuvent  être  trouvées  à
       l'adresse <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

       Depuis    2010,    cette   traduction   est   maintenue   à   l'aide   de   l'outil   po4a
       <URL:http://po4a.alioth.debian.org/> par l'équipe de traduction  francophone  au  sein  du
       projet perkamon <URL:http://perkamon.alioth.debian.org/>.

       Christophe   Blaess   <URL:http://www.blaess.fr/christophe/>   (1996-2003),  Alain  Portal
       <URL:http://manpagesfr.free.fr/> (2003-2006). Julien Cristau et  l'équipe  francophone  de
       traduction de Debian (2006-2009).

       Veuillez     signaler     toute     erreur     de     traduction     en     écrivant     à
       <debian-l10n-french@lists.debian.org>  ou  par  un  rapport  de  bogue   sur   le   paquet
       manpages-fr.

       Vous  pouvez  toujours  avoir  accès  à la version anglaise de ce document en utilisant la
       commande « man -L C <section> <page_de_man> ».