前言
在进程之间,我们不能决定应该先去调度哪一个进程,这时候我们就需要对一个文件加锁,来要求那个先来执行
整体文件锁
int flock(int fd, int operation);
fd :文件描述符
operation:定义的宏,也就是选项
LOCK_SH 共享锁 多个进程可以拥有该锁
LOCK_EX 独立锁 谁加锁,谁解锁
LOCK_UN 解锁
部分文件锁
nt fcntl(int fd, int cmd,strcut flock *lock);
fd:文件描述符
cmd:锁类型(提供的宏)例如 F_SETLKW(阻塞锁)
struct flock {
short l_type; /* 锁的类型: F_RDLCK,F_WRLCK,F_UNLCK */
short l_whence; /* 部分文件锁的相对位置
SEEK_SET, SEEK_CUR, SEEK_END */
off_t l_start; /* 文件锁的开头位置 */
off_t l_len; /* 被加锁文件的长度 */
pid_t l_pid; /* getpid();加锁文件的进程号 */
};