lockf(3) | Library Functions Manual | lockf(3) |
NOM
lockf - Poser, examiner ou supprimer un verrou POSIX sur un fichier ouvert
BIBLIOTHÈQUE
Bibliothèque C standard (libc, -lc)
SYNOPSIS
#include <unistd.h>
int lockf(int fd, int op, off_t len);
lockf() :
_XOPEN_SOURCE >= 500 || /* glibc >= 2.19 : */ _DEFAULT_SOURCE || /* glibc <= 2.19 : */ _BSD_SOURCE || _SVID_SOURCE
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 op, 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 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 succès, zéro est renvoyé. En cas d'erreur, -1 est renvoyé et errno est définie pour préciser l'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, ou op vaut F_LOCK ou F_TLOCK et fd n'est pas un descripteur de fichier en écriture.
- EDEADLK
- L'opération F_LOCK demandée amènerait à un cas d’interblocage.
- EINTR
- Durant l'attente pour acquérir le verrou, l'appel a été interrompu par un signal capturé par un gestionnaire ; consultez signal(7).
- EINVAL
- Une opération invalide a été réclamée sur op.
- ENOLCK
- La table des verrous est pleine.
ATTRIBUTS
Pour une explication des termes utilisés dans cette section, consulter attributes(7).
Interface | Attribut | Valeur |
lockf() | Sécurité des threads | MT-Safe |
STANDARDS
POSIX.1-2008.
HISTORIQUE
POSIX.1-2001, SVr4.
VOIR AUSSI
locks.txt et mandatory-locking.txt dans le répertoire Documentation/filesystems des sources du noyau Linux. (Sur d'anciens noyaux, ces fichiers se trouvent dans le répertoire Documentation et mandatory-locking.txt est appelé mandatory.txt.)
TRADUCTION
La traduction française de cette page de manuel a été créée par Christophe Blaess https://www.blaess.fr/christophe/, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>
Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org.
2 mai 2024 | Pages du manuel de Linux 6.9.1 |