Next: Algorithmes Distribués & Interblocages
Up: Les verrous de fichiers
Previous: Manipulation des verrous
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
int fcntl(int desc, int commande, struct flock *verrou);
fcntl retourne 0 en cas de succès, ou -1 en cas d'echec.
Trois commandes possibles:
- F_SETLKW
- pose bloquante (Wait)
si il existe un verrou incompatible, errno a pour valeur
EAGAIN
si l'on n'a pas les droits d'accès sur le fichier pour le type de verrou demandé, alors errno a pour valeur EACCES;
si la pose du verrou crée une situation d'interblocage, alors errno a pour valeur EDEADLK.
- F_SETLK
- pose non bloquante
succès immédiat si il n'y a pas de verrou incompatible, ou une fois les verrous incompatibles levés.
si l'appel est interrompu, errno a pour valeur EINTR
si une situation d'interblocage est détectée, alors errno a pour valeur EDEADLK.
- F_GETLK
- Test d'existence d'un verrou incompatible avec le verrou passé en paramètre (retour -1 sur des paramètres incorrects)
si il existe un tel verrou incompatible, alors la structure flock passée en paramètre est remplie avec les valeurs de ce verrou incompatible. Le champ l_pid indique alors l'identité du processus propriétaire de ce verrou incompatible.
sinon, la structure flock reste inchangée excepté le champ type qui contient F_UNLCK.
Attention, après un test d'existence qui nous informe de l'absence de
Dominique REVUZ
Mon Feb 2 12:10:31 MET 1998
Une Bug Un mail Merci