Provided by: manpages-fr-dev_3.27fr1.4-1_all bug

NOM

       flock - Placer ou enlever un verrou cooperatif sur un fichier ouvert

SYNOPSIS

       #include <sys/file.h>

       int flock(int fd, int operation);

DESCRIPTION

       Place  ou  enleve  un  verrou consultatif sur un fichier ouvert dont le
       descripteur est fd. Le parametre operation est l'un des suivants :

           LOCK_SH  Verrouillage partage. Plusieurs processus peuvent disposer
                    d'un   verrouillage  partage  simultanement  sur  un  meme
                    fichier.

           LOCK_EX  Verrouillage exclusif.  Un  seul  processus  dispose  d'un
                    verrouillage exclusif sur un fichier, a un moment donne.

           LOCK_UN  Deverrouillage d'un verrou tenu par le processus.

       Un appel flock() peut bloquer si un verrou incompatible est tenu par un
       autre processus. Pour  que  la  requete  soit  non-bloquante,  il  faut
       inclure  LOCK_NB  (par  un  OU  binaire  << | >>  )  avec  la constante
       precisant l'operation.

       Un meme fichier ne peut pas avoir simultanement des verrous partages et
       exclusifs.

       Les  verrous  crees  avec  flock()  sont associes a un fichier, ou plus
       precisement une entree de la table des  fichiers  ouverts.  Ainsi,  les
       descripteurs  de fichier dupliques (par exemple avec fork(2) ou dup(2))
       referent au meme verrou, et celui-ci peut etre  relache  ou  modifie  a
       travers  n'importe  lequel  des  descripteurs.  De  plus, un verrou est
       relache par une operation explicite LOCK_UN  sur  l'un  quelconque  des
       descripteurs, ou lorsqu'ils ont tous ete fermes.

       Si  un  processus  utilise  open(2) (ou equivalent) plusieurs fois pour
       obtenir plusieurs descripteurs sur le meme  fichier,  ces  descripteurs
       sont  traites  independamment par flock(). Une tentative de verrouiller
       le fichier avec l'un de  ces  descripteurs  peut  etre  refusee  si  le
       processus  appelant  a  deja  place  un  verrou  en  utilisant un autre
       descripteur.

       Un processus ne peut avoir  qu'un  seul  type  de  verrou  (partage  ou
       exclusif)  sur  un  fichier.  En  consequence  un  appel flock() sur un
       fichier deja verrouille modifiera le type de verrouillage.

       Les verrous crees par flock() sont conserve au travers d'un execve(2).

       Un verrou partage ou exclusif peut etre place sur un fichier  quel  que
       soit le mode d'ouverture du fichier.

VALEUR RENVOY'EE

       S'il  reussit,  cet appel systeme renvoie 0. S'il echoue, il renvoie -1
       et remplit errno en consequence.

ERREURS

       EBADF  fd n'est pas un descripteur de fichier ouvert.

       EINTR  Durant  l'attente  pour  acquerir  le  verrou,  l'appel  a   ete
              interrompu par un signal capture par un gestionnaire ; consultez
              signal(7).

       EINVAL operation est invalide.

       ENOLCK Le noyau n'a pas  assez  de  memoire  pour  les  allocations  de
              verrou.

       EWOULDBLOCK
              Le fichier est verrouille et l'attribut LOCK_NB a ete precise.

CONFORMIT'E

       BSD 4.4  (l'appel systeme flock() est apparu dans BSD 4.2). Une version
       de flock() parfois implemente a partir de fcntl(2), est apparue sur  la
       plupart des systemes Unix.

NOTES

       flock() ne verrouille par les fichiers a travers NFS. Utilisez fcntl(2)
       a la place : il  fonctionne  avec  NFS  si  la  version  de  Linux  est
       suffisamment recente et si le serveur accepte les verrouillages.

       Depuis le noyau 2.0, flock() est implemente par un appel systeme plutot
       que d'etre emule  par  une  routine  de  la  bibliotheque  C  invoquant
       fcntl(2).  Ceci correspond a la veritable semantique BSD : il n'y a pas
       d'interaction entre les verrous places  par  flock()  et  fcntl(2),  et
       flock() ne detecte pas les cas de blocage (deadlock).

       flock()   place   uniquement  des  verrous  cooperatifs :  suivant  les
       permissions du fichier  un  processus  peut  ignorer  l'utilisation  de
       flock() et faire des entrees-sorties sur le fichier.

       Les  semantiques  des  verrous  places  par  flock()  et  fcntl(2) sont
       differentes en ce qui concerne fork(2) et dup(2). Sur les systemes  qui
       implementent flock() en utilisant fcntl(2), la semantique de flock() ne
       sera pas celle decrite ici.

       La conversion d'un verrou (de partage a exclusif et vice  versa)  n'est
       pas  toujours  atomique : tout d'abord le verrou existant est supprime,
       puis un nouveau verrou est etabli. Entre ces  deux  etapes,  un  verrou
       demande  par  un  autre processus peut etre accorde, ce qui peut causer
       soit un blocage de la conversion, soit  son  echec,  si  LOCK_NB  etait
       indique. (Ceci est le comportement BSD d'origine, et est partage par de
       nombreuses implementations.)

VOIR AUSSI

       close(2), dup(2), execve(2), fcntl(2), fork(2), open(2), lockf(3)

       Consultez aussi Documentation/filesystem/locks.txt dans les sources  du
       noyau (Documentation/locks.txt pour les anciens noyaux).

COLOPHON

       Cette  page  fait  partie  de  la  publication 3.27 du projet man-pages
       Linux. Une description du projet et des instructions pour signaler  des
       anomalies       peuvent       etre       trouvees      a      l'adresse
       <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

       Depuis 2010, cette traduction est maintenue a l'aide  de  l'outil  po4a
       <URL:http://po4a.alioth.debian.org/>   par   l'equipe   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'equipe francophone de traduction de Debian (2006-2009).

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

       Vous  pouvez  toujours avoir acces a la version anglaise de ce document
       en utilisant la commande << man -L C <section> <page_de_man> >>.