Loading

NOM

       flockfile,  ftrylockfile,  funlockfile  - Verrouiller un flux FILE pour
       stdio

SYNOPSIS

       #include <stdio.h>

       void flockfile(FILE *filehandle);
       int ftrylockfile(FILE *filehandle);
       void funlockfile(FILE *filehandle);

   Exigences de  macros  de  test  de  fonctionnalités  pour  la  glibc  (voir
   feature_test_macros(7)) :

       Pour toutes les fonctions ci-dessus : _POSIX_C_SOURCE >= 1 ||
       _XOPEN_SOURCE || _BSD_SOURCE || _SVID_SOURCE || _POSIX_SOURCE

       Les  fonctions  stdio  peuvent  être   utilisées   dans   un   contexte
       multi-threads.  Ceci  est  réalisé  en affectant à chaque objet de type
       FILE  un  « compteur  de  verrouillage »  et  (si  le   « compteur   de
       verrouillage »  est  non  nul)  un  thread propriétaire. Lors de chaque
       appel à la bibliothèque, ces fonctions attendent jusqu’à ce que l’objet
       FILE  ne  soit  plus  verrouillé par un thread différent, puis elles le
       verrouillent, réalisent  les  entrées/sorties  demandées,  et  libèrent
       l’objet.

       (Remarque :  ce  verrouillage  n’a  rien à voir avec le verrouillage de
       fichier réalisé par des fonctions comme flock(2) et lockf(3).)

       Tout ceci est invisible au  programmeur  en  C,  mais  il  existe  deux
       raisons  de  souhaiter un contrôle plus fin. D’une part, un thread peut
       réaliser une série d’entrées/sorties interdépendantes,  ces  opérations
       ne  devant  pas  être  interrompues  par  les  entrées/sorties d’autres
       threads. D’autre part, on peut désirer supprimer la  surcharge  induite
       par ce verrouillage afin d’obtenir de meilleures performances.

       À  cette fin, un thread peut verrouiller explicitement un objet de type
       FILE, puis réaliser sa série d’entrées/sorties, et enfin,  relâcher  le
       verrou. Cela empêche les autres threads d’intervenir sur le flux. Si la
       motivation du verrouillage est la recherche de meilleures performances,
       on  peut  réaliser l’entrée/sortie à l’aide des versions non bloquantes
       des fonctions stdio : avec getc_unlocked(3) et putc_unlocked(3) au lieu
       de getc(3) et putc(3).

       La  fonction flockfile() attend jusqu’à ce que *filehandle ne soit plus
       verrouillé par un autre thread,  puis  affecte  *filehandle  au  thread
       actuel, et incrémente le « compteur de verrouillage ».

       La fonction funlockfile() décrémente le « compteur de verrouillage ».

       La   fonction   ftrylockfile()   est   une  version  non  bloquante  de
       flockfile(). Elle ne fait rien lorsqu’un autre thread est  propriétaire
       de  *filehandle, sinon, elle se l’approprie et incrémente le « compteur
       de verrouillage ».

VALEUR RENVOYÉE

       La fonction ftrylockfile() renvoie zéro en cas de succès (le  verrou  a
       été obtenu), et une valeur non nulle en cas d’échec.

ERREURS

       Aucune.

CONFORMITÉ

       POSIX.1-2001.

DISPONIBILITÉ

       Ces fonctions sont disponibles lorsque _POSIX_THREAD_SAFE_FUNCTIONS est
       défini. Elles sont présentes dans la libc depuis  la  version 5.1.1  et
       dans la glibc depuis la version 2.0.

VOIR AUSSI

       unlocked_stdio(3)

COLOPHON

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

TRADUCTION

       Cette page de manuel a été traduite  par  Stéphan  Rafin  <stephan  DOT
       rafin  AT  laposte  DOT  net> en 2002, puis a été mise à jour par Alain
       Portal <aportal AT  univ-montp2  DOT  fr>  jusqu’en  2006,  et  mise  à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Florentin Duneau <fduneau@gmail.com> et l’équipe
       francophone de traduction de Debian.

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

                                 29 août 2008