Листинг 9.4. Вызов fcntl для получения и снятия блокировки
//lib/lock_reg.c
1 #include "unpipc.h"
2 int
3 lock_reg(int fd, int cmd, int type, off_t offset, int whence, off_t len)
4 {
5 struct flock lock;
6 lock.l_type = type; /* F_RDLCK, F_WRLCK, F_UNLCK */
7 lock.l_start = offset; /* сдвиг по отношению к l_whence */
8 lock.l_whence = whence; /* SEEK SET. SEEK CUR, SEEK END */
9 lock.l_len = len; /* количество байтов (0 – до конца файла) */
10 return(fcnt(fd, cmd, &lock)"); /* –1 в случае ошибки */
11 }