Next: Algorithmes Distribués & Interblocages Up: Les verrous de fichiers Previous: Manipulation des verrous

Utilisation de fcntl pour manipuler les 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