Available in

(1) (1)/fr (1)/ja (2) (2)/de (2)/es (2)/fr (2)/ja (2)/ko (2)/pl (2)/pt (2)/ru (2freebsd) (3) (3ucb)

TOC

FLOCK(2)                  Manuel du programmeur Linux                 FLOCK(2)



NOM

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

SYNOPSIS

       #include <sys/file.h>

       int flock(int fd, int operation);

DESCRIPTION

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

           LOCK_SH  Verrouillage partag. Plusieurs processus peuvent  disposer
                    d'un  verrouillage partag simultanment sur un mme fichier.

           LOCK_EX  Verrouillage exclusif. Un seul processus dispose d'un ver-
                    rouillage exclusif sur un fichier,  un moment donn.

           LOCK_UN  Dverrouillage 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 requte soit non-bloquante, il faut inclure
       LOCK_NB (par un OU binaire  |  ) avec la constante prcisant l'opration.

       Un mme fichier ne peut pas avoir simultanment des  verrous  partags  et
       exclusifs.

       Les  verrous  crs avec flock() sont associs  un fichier, ou plus prcis-
       ment une entre de la table des fichiers ouverts.  Ainsi,  les  descrip-
       teurs  de  fichier dupliqus (par exemple avec fork(2) ou dup(2)) rfrent
       au mme verrou, et celui-ci peut tre relch ou modifi  travers  n'importe
       lequel  des descripteurs. De plus, un verrou est relch par une opration
       explicite LOCK_UN sur l'un quelconque des descripteurs,  ou  lorsqu'ils
       ont tous t ferms.

       Si  un  processus  utilise  open(2)  (ou quivalent) plusieurs fois pour
       obtenir plusieurs descripteurs sur le  mme  fichier,  ces  descripteurs
       sont  traits indpendamment par flock(). Une tentative de verrouiller le
       fichier avec l'un de ces descripteurs peut tre refuse si  le  processus
       appelant a dj plac un verrou en utilisant un autre descripteur.

       Un  processus  ne  peut  avoir  qu'un  seul  type  de verrou (partag ou
       exclusif) sur un fichier. En consquence un appel flock() sur un fichier
       dj verrouill modifiera le type de verrouillage.

       Les verrous crs par flock() sont conserv au travers d'un execve(2).

       Un verrou partag ou exclusif peut tre plac sur un fichier quel que soit
       le mode d'ouverture du fichier.

VALEUR RENVOYE

       En cas de russite, zro est renvoy, sinon -1 est renvoy  et  errno  con-
       tient le code d'erreur.

ERREURS

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

       EINTR  Durant  l'attente pour acqurir le verrou, l'appel a t interrompu
              par un signal captur par un gestionnaire ; voir signal(7).

       EINVAL operation est invalide.

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

       EWOULDBLOCK
              Le fichier est verrouill et l'attribut LOCK_NB a t prcis.

CONFORMIT

       BSD 4.4  (l'appel  systme flock() est apparu dans BSD 4.2). Une version
       de flock() parfois implment  partir de fcntl(2),  est  apparue  sur  la
       plupart des systmes Unix.

NOTES

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

       Depuis le noyau 2.0, flock() est implment par un appel systme plutt que
       d'tre mul par une routine de la bibliothque C invoquant fcntl(2).  Ceci
       correspond   la  vritable  smantique  BSD :  il n'y a pas d'interaction
       entre les verrous placs par flock() et fcntl(2), et flock()  ne  dtecte
       pas les cas de blocage (deadlock).

       flock()  place  uniquement des verrous coopratifs : suivant les permis-
       sions du fichier un processus peut ignorer l'utilisation de flock()  et
       faire des entres-sorties sur le fichier.

       Les   smantiques  des  verrous  placs  par  flock()  et  fcntl(2)  sont
       diffrentes en ce qui concerne fork(2) et dup(2). Sur  les  systmes  qui
       implmentent  flock()  en utilisant fcntl(2), la smantique de flock() ne
       sera pas celle dcrite ici.

       La conversion d'un verrou (de partag  exclusif et vice versa) n'est pas
       toujours  atomique :  tout d'abord le verrou existant est supprim, puis
       un nouveau verrou est tabli. Entre ces deux tapes, un verrou demand par
       un  autre processus peut tre accord, ce qui peut causer soit un blocage
       de la conversion, soit son chec, si LOCK_NB tait indiqu. (Ceci  est  le
       comportement  BSD d'origine, et est partag par de nombreuses implmenta-
       tions.)

VOIR AUSSI

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

       Voir aussi Documentation/locks.txt et Documentation/mandatory.txt  dans
       les sources du noyau.

COLOPHON

       Cette  page  fait  partie  de  la  publication 3.07 du projet man-pages
       Linux. Une description du projet et des instructions pour signaler  des
       anomalies    peuvent    tre    trouves     l'adresse    http://www.ker-
       nel.org/doc/man-pages/.

TRADUCTION

       Cette page de manuel a t traduite et mise  jour par  Christophe  Blaess
       <http://www.blaess.fr/christophe/>;  entre  1996 et 2003, puis par Alain
       Portal <aportal AT univ-montp2 DOT fr> jusqu'en 2006, et mise  disposi-
       tion sur http://manpagesfr.free.fr/.

       Les  mises   jour et corrections de la version prsente dans Debian sont
       directement gres par Julien Cristau  <jcristau [AT] debian.org>  et  l'quipe
       francophone de traduction de Debian.

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

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



Linux                            24 avril 2002                        FLOCK(2)

COMMENTS

Add your comment here. Whitespace and linebreaks are preserved. URLs are linked automatically.
CAPTCHA

No HTML allowed. URLs will be linked with nofollow attribute. Whitespace is preserved.