•什么是文件锁
•英文名:file lock,在同一时刻只允许一个进程对文件进行访问
•建议性锁:advisory locking,又称协同锁
–内核只提供加减锁以及检测是否加锁,不提供锁的控制与协调工作
–需要多进程相互检测确认的加锁机制
–A进程对一个操作的文件加了锁
–B进程同样可以对该文件进行读写操作
–只有当B进程也对该文件加锁,文件锁才能起到同步作用
–Linux一般使用建议锁,而Windows一般使用强制性锁
•强制性锁: mandatory locking
–进程对文件进行I/O操作是,内核内部会检测该文件是否被加锁
–A进程对一个操作的文件加了锁
–当B进程对该文件进行I/O操作时,内核若检测该文件加了强制锁,B进程的操作则会失败
•系统调用:flock
•函数原型:int flock (int fd, int operation);
•函数功能:给整个文件添加或解除一个建议锁
•函数参数:operation
–LOCK_SH:共享锁
–LOCK_EX:独占锁、排他锁
–LOCK_UN:移除锁
•TIPS
–Flock只提供加锁、解锁机制,不提供锁检查
–需要用户自己检测,达到多进程同步操作
–用户若不自己检测,同样可以对一个已经加锁的文件进行读写操作
•系统调用:fcntl
•函数原型: int fcntl (int fd, int cmd, …