免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4560 | 回复: 5
打印 上一主题 下一主题

使用lockf加锁文件后,如果文件关闭,锁会不会自动释放? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-01-30 14:59 |只看该作者 |倒序浏览
使用lockf加锁文件后,如果文件关闭,锁会不会自动释放?
如下lockf(fp,F_LOCK,(off_t)0);
close(fp)后是不是会自动释放

论坛徽章:
0
2 [报告]
发表于 2009-01-30 16:28 |只看该作者
不用再加F_UNLOCK吧?

论坛徽章:
0
3 [报告]
发表于 2009-01-31 01:00 |只看该作者
http://www.lslnet.com/linux/dosc1/42/linux-297519.htm

您可以看下这个链接地址上的内容。

其实最好的办法是: man lockf

通过C库代码发现其实现是通过fcntl系统调用接口实现的,通过这三个cmd接口实现的对应功能。

  1.      F_GETLK,  F_SETLK  and  F_SETLKW are used to acquire, release, and test
  2.        for the existence of record locks (also known as file-segment or  file-
  3.        region  locks).
复制代码


再通过man fcntl,可以确切知道,当进程退出时,对应的资源是会全部释放的。
但是对应到close(fp)这种,在释放对应的文件资源时,应该会释放(因为没看到对应那句话说)。

不过建议用的时候,还是成对的用吧,打开文件<->关闭文件, lock <-> unlock , malloc <-> free。

论坛徽章:
0
4 [报告]
发表于 2009-01-31 09:50 |只看该作者
会释放~~项目中用到过这个,很肯定的说!

论坛徽章:
0
5 [报告]
发表于 2009-02-01 08:00 |只看该作者
谢谢楼上的,我就这么用了。现在是如果加上unlock 速度就变慢了。

论坛徽章:
0
6 [报告]
发表于 2009-02-01 10:21 |只看该作者
apue2  好象说只要关闭文件,就会释放与该文件相关的所有锁.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP