Next: Utilisation de fcntl pour Up: Les verrous de fichiers Previous: Le mode opératoire des

Manipulation des verrous

La structure de verrou flock:

struct flock  {          
      short    l_type;      /* F_RDLCK, F_WRLCK,F_UNLCK */
      short    l_whence;    /* SEEK_SET,SEEK_CUR,SEEK_END */
      off_t    l_start;     /* position relative a l_whence */
      off_t    l_len;       /* longueur de l'intervalle */
      pid_t    l_pid;       /* PID du processus propriétaire */
};

le champ l_type

F_RDLCK
verrou partagé
F_WRLCK
verrou exclusif
F_UNLCK
déverrouillage

Les manipulations de verrous se font avec la primitive fcntl, c'est-à-dire par le biais d'un descripteur. Pour poser un verrou partagé, ce descripteur doit pointer sur une ouverture en lecture. De même, il faut un descripteur sur une ouverture en écriture pour un verrou de type exclusif
.

Pour décrire la portée du verrou que l'on veut poser, on utilise la même syntaxe que pour la primitive lseek, le début de l'intervalle est whence+l_start:
l_whence = SEEK_SET tex2html_wrap_inline5855 whence = 0
l_whence = SEEK_CUR tex2html_wrap_inline5855 whence = offset courrant
l_whence = SEEK_END tex2html_wrap_inline5855 whence = taille du fichier.

La longueur du verrou est définie par le champ l_len. Si cette valeur est nulle, le verrou va jusqu'à la fin du fichier (même si le processus change cette fin). Remarque: il est possible de poser un verrou dont la portée est supérieure à la taille du fichier.

Le champ l_pid contient le pid du processus propriétaire du verrou, ce champ est rempli par fcntl dans le cas d'un appel consultatif (F_GETLK).



Dominique REVUZ
Mon Feb 2 12:10:31 MET 1998
Une Bug Un mail Merci