man lockf (Fonctions bibliothèques) - Poser, examiner ou supprimer un verrou Posix sur un fichier ouvert.
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);
DESCRIPTION
Cette fonction pose, examine, ou supprime un verrou Posix sur un fichier ouvert. Le fichier est indiqué 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 extensiont ultérieures. Dans tous les cas, la section peut s'étendre au-delà de la fin du fichier.
Sous Linux, cette fonction est juste une interface pour l'appel-système fcntl(2). (En général, les relations entre lockf et fcntl sont indéterminées).
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
- Verifier 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 EACCES dans errno si un autre processus possède le verrou.
VALEUR RENVOYÉE
Si elle réussit, cette fonction renvoie 0. En cas d'erreur, elle renvoie -1 et remplit errno en conséquence.
ERREURS
- EAGAIN
- Le fichier est verrouillée 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 valide.
- 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É
SYSV, POSIX 1003.1-2001
VOIR AUSSI
fcntl(2),
flock(2)
On peut aussi examiner
locks.txt
et
mandatory.txt
dans la documentation Linux
/usr/src/linux/Documentation.
TRADUCTION
Christophe Blaess, 2000-2003.