flock和fcntl的区别
来源:互联网 发布:金十数据直播室 编辑:程序博客网 时间:2024/05/18 14:28
fork之后,flock的锁依然保持。fcntl的锁丢失。
execve的时候,无论是Linux还是freebsd,无论是flock还是fcntl,锁依然保持。
对于flock而言,fork/dup,或是用open以相同的路径获得一个新的fd,对这个fd的锁都是指向同一个锁。例如fork后子进程用flock(fd,LOCK_UN)这个锁,那么父进程也会丢失这个锁。而fcntl的锁则在fork的时候被释放。
另外一个区别是,如果用open以相同的路径获得一个新的fd,那么对这个fd进行close或解锁操作将会导致丢失原来用fcntl加的锁,但是close操作不会丢失之前给老fd用flock加的锁。所以对/etc/passwd这样的文件使用fcntl加锁是非常有风险的,因为不确定你用到的某个函数库需要访问这个文件然后就会导致丢失锁。
Freebsd下fcntl、flock和lockf是相容的。而linux下fcntl和flock不是相容的。进程A用flock获取锁之后,进程B用fcntl依然能获取。
fcntl是posix标准,所以在linux/freebsd下差别不大。但是flock是bsd的函数,linux为了兼容而实现了它。
linux下,lockf是用fcntl实现的。
对于flock而言,fork/dup,或是用open以相同的路径获得一个新的fd,对这个fd的锁都是指向同一个锁。例如fork后子进程用flock(fd,LOCK_UN)这个锁,那么父进程也会丢失这个锁。而fcntl的锁则在fork的时候被释放。
另外一个区别是,如果用open以相同的路径获得一个新的fd,那么对这个fd进行close或解锁操作将会导致丢失原来用fcntl加的锁,但是close操作不会丢失之前给老fd用flock加的锁。所以对/etc/passwd这样的文件使用fcntl加锁是非常有风险的,因为不确定你用到的某个函数库需要访问这个文件然后就会导致丢失锁。
Freebsd下fcntl、flock和lockf是相容的。而linux下fcntl和flock不是相容的。进程A用flock获取锁之后,进程B用fcntl依然能获取。
fcntl是posix标准,所以在linux/freebsd下差别不大。但是flock是bsd的函数,linux为了兼容而实现了它。
linux下,lockf是用fcntl实现的。
- flock和fcntl的区别
- flock和fcntl的区别
- flock和fcntl的区别
- fcntl和flock两个系统调用的区别
- fcntl和flock两个系统调用的区别
- fcntl和flock两个系统调用的区别
- fcntl和flock两个系统调用的区别
- Linux中flock和fcntl区别
- linux中fcntl()、lockf、flock的区别
- linux中fcntl()、lockf、flock的区别
- linxu c语言 fcntl函数和flock函数区别说明
- 嵌入式 Linux下fcntl函数和flock函数区别说明
- fcntl 记录锁和struct flock
- fcntl 记录锁和struct flock
- Linux 中关于文件锁的系统调用:flock和fcntl
- Linux 中关于文件锁的系统调用:flock和fcntl
- 文件锁 flock/fcntl
- linux之fcntl&flock建议锁的操作
- 扩展欧几里德算法求解线性同余方程
- Firefox OS 模拟器 1.0 发布
- 对单元测试的一点感悟——这是一把双刃剑
- new hdoj 1072(很经典的搜索)(费用需要慎重)
- hadoop的环境配置
- flock和fcntl的区别
- 信息系统项目管理之项目范围管理知识总结
- HDU4237:The Rascal Triangle
- mac 快捷键
- 2013蓝桥杯预赛javaA 梅森素数
- IE6,IE7下 float:right 后换行的问题
- Prim算法
- 如何使用SQLMap绕过WAF
- 拷贝数组的数据