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
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  whence = 0
 whence = 0
 
l_whence = SEEK_CUR  whence = offset courrant
 whence = offset courrant
 
l_whence = SEEK_END  whence = taille du fichier.
 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).