曲径通幽论坛
标题:
lockf
[打印本页]
作者:
beyes
时间:
2009-4-24 02:23
标题:
lockf
lockf(
) 也可以用来对文件区域设锁,这和 fcntl() 比较相似,但它也相对简单些,因为功能性和灵活性要差些。其函数原型为:
#include <unistd.h>
int
lockf
(
int
fileds
,
int
function
,
off_t
size_to_lock
);
fileds
是文件描述符;
function
参数有以下几个值:
F_ULOCK
: 解锁
F_LOCK
: 设置独占锁
F_TLOCK
: 测试并实施独占封锁
F_TEST
: 对其它进程实施的封锁进行测试
size_to_lock
参数从文件当前的偏移算起的字节数。
在使用 lockf() 时,必须先定位到你想要在文件中的锁定区域的起始位置( 可以用 lseek() 调用来做 ),然后就在参数中指定 size_to_lock 的值以指明欲锁定区域的大小。
其实,像 lockf() 和 fcntl() 这样的文件锁定方法,都仅仅是 ”
建议性
“ 的,所以这些锁也可叫建议锁,原因是这些 “锁定” 并不会真正的阻止文件爱你的读写操作。之所以设置这些锁,是希望别的程序在使用这些区域前进行测试检查,以达到合作完成任务的目的,而不致于会产生冲突。对于 fcntl() 和 lockf() 混用所产生的后果是未定义的,所以用哪一种锁定函数就要从一而终的使用这个函数。
欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/)
Powered by Discuz! X3.2