5.2.6.1.2. Block Locking System Call
int fcntl (int fd, int cmd, struct flock *lock);
struct flock {
  ...
  short l_type;    // F_WRLCK, F_RDLCK, F_UNLCK
  short l_whence;  // SEEK_SET, SEEK_CUR, SEEK_END
  off_t l_start;   // Starting offset for lock
  off_t l_len;     // Number of bytes to lock
  pid_t l_pid;     // Who blocks our lock
  ...
};