Linux |
CentOS 4.8 |
|
flock(2) |
flock − Placer ou enlever un verrou consultatif (advisory lock) sur un fichier ouvert. |
#include <sys/file.h> int flock(int fd, int operation); |
Place ou enlève un verrou consultatif sur un fichier ouvert dont le descripteur est fd. Les opérations possibles sont : |
LOCK_SH |
Verrouillage partagé. Plusieurs processus peuvent disposer d’un verrouillage partagé simultanément sur un même fichier. |
||
LOCK_EX |
Verrouillage exclusif. Un seul processus dispose d’un verrouillage exclusif sur un fichier, à un moment donné. |
||
LOCK_UN |
Déverrouillage. |
||
LOCK_NB |
Ne pas bloquer lors d’un verrouillage. Cette option est utilisée conjointement ( OU binaire | ) avec les autres opérations. |
Un fichier donné ne peut pas posséder simultanément des verrous partagés et des verrous exclusifs. C’est un fichier que l’on verrouille (c’est à dire un i-noeud) et non pas un descripteur de fichier. Ainsi, dup(2) et fork(2) ne créent pas d’instances multiples d’un verrou. |
flock renvoie 0 s’il réussit, ou −1 en cas d’échec, auquel cas errno contient le code d’erreur. |
EWOULDBLOCK |
Le fichier est verrouillé et l’attribut LOCK_NB a été précisé. |
4.4BSD (l’appel système flock(2) est apparu pour la première fois dans 4.2BSD). |
flock(2) ne verrouille par les fichiers à travers NFS. Utilisez fcntl(2) à la place : il fonctionne avec NFS si la version de Linux est suffisamment récente et si le serveur accepte les verrouillages. Les verrous flock(2) et fcntl(2) ont une sémantique différente vis à vis des processus dupliqués par fork(2), et dup(2). |
open(2), close(2), dup(2), execve(2), fcntl(2), fork(2), lockf(3) On peut également se reporter aux fichiers locks.txt et mandatory.txt dans le répertoire /usr/src/linux/Documentation. |
Christophe Blaess, 1997. |
flock(2) |