曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 5191|回复: 0
打印 上一主题 下一主题

[文件I/O] lockf

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2009-4-24 02:23:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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() 混用所产生的后果是未定义的,所以用哪一种锁定函数就要从一而终的使用这个函数。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-4 13:12 , Processed in 0.076225 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表