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
 Une Bug Un mail Merci