lockf
Section: C Library Functions (3)
Updated: 5 février 2023
Index
Return to Main Contents
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 cmd, off_t len);
Exigences de macros de test de fonctionnalités pour la glibc (consulter
feature_test_macros(7)) :
lockf() :
_XOPEN_SOURCE >= 500
|| /* glibc >= 2.19: */ _DEFAULT_SOURCE
|| /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
DESCRIPTION
Apply, test, or remove a POSIX lock on a section of an open file. The file
is specified by fd, a file descriptor open for writing, the action by
cmd, and the section consists of byte positions pos..pos+len-1
if len is positive, and pos-len..pos-1 if len is negative,
where pos is the current file position, and if len is zero, the
section extends from the current file position to infinity, encompassing the
present and future end-of-file positions. In all cases, the section may
extend past current end-of-file.
On Linux, lockf() is just an interface on top of fcntl(2) locking.
Many other systems implement lockf() in this way, but note that POSIX.1
leaves the relationship between lockf() and fcntl(2) locks
unspecified. A portable application should probably avoid mixing calls to
these 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 cmd 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 cmd.
- 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-2001, POSIX.1-2008, SVr4.
VOIR AUSSI
fcntl(2), flock(2)
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>
et
David Prévot <david@tilapin.org>
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 à
Index
- NOM
-
- BIBLIOTHÈQUE
-
- SYNOPSIS
-
- DESCRIPTION
-
- VALEUR RENVOYÉE
-
- ERREURS
-
- ATTRIBUTS
-
- STANDARDS
-
- VOIR AUSSI
-
- TRADUCTION
-
This document was created by
man2html,
using the manual pages.
Time: 13:57:54 GMT, May 22, 2024