LINUX程序设计读书笔记--文件锁

内存分配:
 malloc返回的的内存是线性的,所以它可以被映射到任何类型的指针上去。
文件封锁:
 解除文件锁:(void)unlink(lock_file);

int fcntl(int fildes, int command, struct flock *flock_structure);

command:
F_GETLK:获取fildes打开的那个文件的封锁信息,它不会对文件进行封锁。
F_SETLK:对fildes指定的文件的某个区域实施或者解除封锁。
F_SETLKW

flock结构在不同版本有不同的实现方法,但至少包含以下几个成员:
short   l_type:
short   l_whence
off_t   l_start:
off_t l_len:文件预定封锁区的字节个数
pid_t l_pid:拥有锁的进程的标识代码

l_type成员:(fcntl.h中定义)
F_RDLCK:一个共享(读操作)锁,文件必须以“读”或者“读、写”权限打开
F_UNLCK:解除封锁,用来清除各种封锁
F_WRLCK:写操作锁(独占锁)

l_whence:(unistd.h中定义)相对于l_start的偏移值
SEEK_SET:文件头
SEEK_CUR:当前位置
SEEK_END:文件尾

文件中的每个字节在任一时间只能拥有:共享访问锁,独占访问锁,解除封锁 这三

种中的一种。

程序对某个文件拥有的各种锁将在相应的文件描述符被关闭时自动清除,各种封锁在

程序结束时也会自动清除。

int res  =  fcntl(fildes , F_SETLK,  &structofflock);(设置文件锁)
                fcntl(fildes , F_GETLK,  &structofflock);(读取)
                fcntl(fildes , F_UNLCK,  &structofflock); (解除) 

待续......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值