fcntl 记录锁和struct flock
来源:互联网 发布:mac mpv 安装 编辑:程序博客网 时间:2024/05/17 23:26
fcntl 记录锁
很多时候,当我们有多个进程要访问同一个文件的时候,为了防止多进程访问导致的不一致,我们就要考虑进程间的同步问题了。fcntl是一个非常强大的函数,在这里我们可以使用它来给文件的某一个部分上锁。先来看一下它的声明:
- int fcntl(int filedes, int cmd, ... /* struct flock *flockptr */ );
很显然,这是一个拥有可变参数的函数声明,filedes自然是要操作的文件描述符,对与记录锁相关的操作,cmd只能是F_GETLK, F_SETLK, 或者 F_SETLKW,而第三个参数则必须是一个指向flock结构体的指针,来看一下该结构体的内部结构:
- struct flock {
- short l_type;/*F_RDLCK, F_WRLCK, or F_UNLCK */
- off_t l_start;/*offset in bytes, relative to l_whence */
- short l_whence;/*SEEK_SET, SEEK_CUR, or SEEK_END */
- off_t l_len;/*length, in bytes; 0 means lock to EOF */
- pid_t l_pid;/*returned with F_GETLK */
- };
第一个成员是加锁的类型:只读锁,读写锁,或是解锁。l_start和l_whence用来指明加锁部分的开始位置,l_len是加锁的长度,l_pid是加锁进程的进程id。比如说,我们现在需要把一个文件的前三个字节加读锁,则该结构体的l_type=F_RDLCK, l_start=0, l_whence=SEEK_SET, l_len=3,l_pid不需要指定,然后调用fcntl函数时,cmd参数使用F_SETLK.
- fcntl 记录锁和struct flock
- fcntl 记录锁和struct flock
- 文件锁 flock/fcntl
- 文件锁 flock及fcntl flock
- flock和fcntl的区别
- flock和fcntl的区别
- flock和fcntl的区别
- Linux中flock和fcntl区别
- 记录锁 和 fcntl函数
- Linux 中关于文件锁的系统调用:flock和fcntl
- Linux 中关于文件锁的系统调用:flock和fcntl
- fcntl和flock两个系统调用的区别
- fcntl和flock两个系统调用的区别
- fcntl和flock两个系统调用的区别
- linxu c语言 fcntl函数和flock函数区别说明
- fcntl和flock两个系统调用的区别
- 嵌入式 Linux下fcntl函数和flock函数区别说明
- linux之fcntl&flock建议锁的操作
- 为什么在eclipes为创建一个android布局文件在R中没有自动生成
- Python学习笔记--初学感想
- 爱心网站笔记(三)
- Linux设备模型(总线、设备、驱动程序和类)
- JMS与WebService负载均衡
- fcntl 记录锁和struct flock
- 分支限界---->0/1背包
- redis配置
- 【hdu3820】【最小割】Golden Eggs
- mongodb入门-3 数据类型--基本数据类型
- 单例模式
- CentOs下安装Chrome浏览器【看完有惊喜,facebook、youtube、推特想到什么】
- 百度地图api错误编码errorcode 162
- GDB调试带参数程序