NOM
lockf - Poser, examiner ou supprimer un verrou POSIX sur un fichier
ouvert
SYNOPSIS
#include <unistd.h>
int lockf(int fd, int cmd, off_t len);
Exigences de macros de test de fonctionnalités pour la glibc (voir
feature_test_macros(7)) :
lockf() : _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500
Cette fonction pose, examine, ou supprime un verrou POSIX sur un
fichier ouvert. Le fichier est spécifié par fd, un descripteur ouvert
en écriture, l’action par cmd, et la section par les octets aux
positions pos..pos+len-1 si len est positive et pos-len..pos-1 si len
est négative, où pos est la position actuelle dans le fichier. Si len
vaut zéro, la section s’étend de la position courant à l’infini,
englobant la fin de fichier et les extensions ultérieures. Dans tous
les cas, la section peut s’étendre au delà de la fin du fichier.
Sous Linux, lockf() est une interface de vérrou au dessus de fcntl(2).
Beaucoup d’autres systèmes implémentent lockf() de cette façon,
cependant POSIX.1-2001 ne spécifie pas la relation de vérrou entre
lockf() et fcntl(2). Une application portable ne devrait pas mixer des
appels à ces deux interfaces.
Les opérations valides sont les suivantes :
F_LOCK Poser un verrou exclusif sur la section indiquée du fichier. Si
(une partie de) la section est déjà verrouillée, l’appel bloque
jusqu’à la suppression du verrou précédent. Si la section
recouvre un verrou existant (du même processus), les deux sont
regroupés. Les verrouillages sont libérés lorsque le processus
ferme un descripteur du fichier. Un processus fils n’hérite pas
du verrou.
F_TLOCK
Comme F_LOCK mais l’appel n’est pas bloquant, il renvoie une
erreur si le fichier est déjà verrouillé.
F_ULOCK
Déverrouiller la section indiquée du fichier. Ceci peut conduire
une section verrouillée à être découpée en deux sections.
F_TEST Vérifier s’il y a un verrou : l’appel renvoie 0 si la section
indiquée est libre ou verrouillée par le processus appelant, et
-1 avec EAGAIN (EACCES sur d’autres systèmes) dans errno si un
autre processus possède le verrou.
VALEUR RENVOYÉE
En cas de réussite, zéro est renvoyé, sinon -1 est renvoyé et errno
contient le code d’erreur.
ERREURS
EACCES ou EAGAIN
Le fichier est verrouillé et F_TLOCK ou F_TEST étaient indiqués,
ou encore l’opération est impossible car le fichier est projetée
dans la mémoire d’un autre processus.
EBADF fd n’est pas un descripteur de fichier ouvert.
EDEADLK
L’opération T_LOCK demandée amènerait à un cas de blocage.
EINVAL Une opération invalide a été réclamée sur fd.
ENOLCK La table des verrous est pleine.
CONFORMITÉ
SVr4, POSIX.1-2001.
VOIR AUSSI
fcntl(2), flock(2)
Il existe aussi locks.txt et mandatory-locking.txt dans le répertoire
Documentation/filesystems des sources du noyau (sur d’anciens noyaux,
ces fichiers se trouvent dans le répertoire Documentation/ et
mandatory-locking.txt est appelé mandatory.txt).
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 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 à
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> ».