int fcntl(int fd,int cmd);
int fcntl(int fd,int cmd,long arg);
int fcntl(int fd,int cmd,struct flock *lock);
fd:文件描述符
cmd:命令选项,常见的有以下可选值
F_DUPFD:复制一个现有的描述符
F_GETFL:获得文件状态标记
F_SETFL:设置文件状态标记
F_GETOWN:获取异步I/O所有权
F_SETOWN:设置异步I/O所有权
F_GETLK:获取记录锁状态
F_SETLK:设置记录锁状态
F_SETLKW:设置记录锁状态,
lock:结构体,保存锁的信息
struct flock {
...
short l_type; /* Type of lock: F_RDLCK,
F_WRLCK, F_UNLCK */
short l_whence; /* How to interpret l_start:
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; /* PID of process blocking our lock
(set by F_GETLK and F_OFD_GETLK) */
...
};