1#include <stdlib.h> 2#include <unistd.h> 3 4#include "nfs_flock.h" 5 6int lock_reg(int fd, int type, off_t offset, int whence, off_t len, int cmd) 7{ 8 struct flock lock; 9 10 lock.l_type = type; 11 lock.l_start = offset; 12 lock.l_whence = whence; 13 lock.l_len = len; 14 15 return (fcntl(fd, cmd, &lock)); 16} 17 18int lock_test(int fd, int type, off_t offset, int whence, int len) 19{ 20 struct flock lock; 21 22 lock.l_type = type; 23 lock.l_start = offset; 24 lock.l_whence = whence; 25 lock.l_len = len; 26 27 if (fcntl(fd, F_GETLK, &lock) < 0) { 28 perror("F_GETLK"); 29 exit(2); 30 } 31 32 if (lock.l_type == F_UNLCK) 33 return (0); 34 35 return (lock.l_pid); 36} 37