URN Logo
UNIX Resources » Linux » China Linux Forum » C/C++编程版 » 23 » 如何锁住文件?
announcement 声明: 本页内容为中国Linux论坛的内容镜像,文章的版权以及其他所有的相关权利属于中国Linux论坛和相应文章的作者,如果转载,请注明文章来源及相关版权信息。
Resources
China Linux Forum(finished)
Linux Forum(finished)
FreeBSD China(finished)
linuxforum.net
  业界新闻与评论
  自由软件杂谈
  IT 人生
  Linux软件快递
  翻译作坊
  Linux图书与评论
  GNU Emacs/XEmacs
  Linux 中文环境和中文化
  Linux桌面与办公软件
  Linux 多媒体与娱乐版
  自由之窗Mozilla
  笔记本电脑上的Linux
  Gentoo
  Debian 一族
  网络管理技术
  Linux 安装与入门
  WEB服务器和FTP服务器
  域名服务器和邮件服务器
  Linux防火墙和代理服务器应用
  文件及打印服务器
  技术培训与认证
  Linux内核技术
  Linux 嵌入技术
  Linux设备驱动程序
  Linux 集群技术
  LINUX平台数据库
  系统和网络安全
  CPU 与 编译器
  系统计算研究所专栏
  Linux下的GUI软件开发
  C/C++编程版
  PHP 技 术
  Java&jsp技术
  Shell编程技术
  Perl 编 程
  Python 编 程
  XML/Web Service 技术
  永远的Unix
  FreeBSD世界
   
如何锁住文件?
如何锁住文件? - normalnotebook [2005-10-27 22:59 | 201 byte(s)]
 
Re: 如何锁住文件? - zhangxp [2005-10-28 08:03 | 228 byte(s)]
 
Re: 如何锁住文件? - zhllg [2005-10-28 09:39 | 36 byte(s)]
 
Re: 如何锁住文件? - zhangxp [2005-10-28 11:22 | 31 byte(s)]
 
Re: 如何锁住文件? - zhllg [2005-10-28 00:15 | 1,110 byte(s)]
 
Re: 如何锁住文件? - normalnotebook [2005-10-28 23:28 | 194 byte(s)]
 
Re: 如何锁住文件? - zhllg [2005-10-28 23:47 | 155 byte(s)]
 
Subject: 如何锁住文件?
Author: normalnotebook    Posted: 2005-10-27 22:59    Length: 201 byte(s)
[Original] [Print] [Top]
我在程序中,open一个文件,然后用fcntl()上锁,上锁(是写锁)也是成功的。
但我试图再次打开这个文件时,还是能open。我想要的结果是:再次open时,应该是错误的,请问怎么能办到?

[Original] [Print] [Top]
Subject: Re: 如何锁住文件?
Author: zhllg    Posted: 2005-10-28 00:15    Length: 1,110 byte(s)
[Original] [Print] [Top]
it's advisory lock
when using advisory lock
it is up to programmer to ensure that
whenever access a file or part of that file, acquire its lock first

maybe you need mandantory lock
see the following table

Type of Blocking Nonblocking
existing lock descriptor, descriptor,
on region tries to tries to
held by other
process read write read write

read lock OK blocks OK EAGAIN

write lock blocks blocks EAGAIN EAGAIN


see /usr/src/linux/Documentation/mandatory.txt and relevant chapters in APUE

the steps you need to take are as follows:

chmod g+s file
chmod g-x file

then remount the filesystem which "file" resides with a "mand" option, e.g.

mount -o remount,mand /dev/hda2 /

there you go!
----
[Original] [Print] [Top]
Subject: Re: 如何锁住文件?
Author: zhangxp    Posted: 2005-10-28 08:03    Length: 228 byte(s)
[Original] [Print] [Top]
unix/linux 是 “建议锁”,应该在第二次open之前在fctnl上锁一次,发现上锁失败,程序不要open。


你说的那种第二次open也直接失败的情况叫“强制锁”,windows才支持。


错误请指正。
----
有花摘时堪需折 莫待花落空折枝
[Original] [Print] [Top]
Subject: Re: 如何锁住文件?
Author: zhllg    Posted: 2005-10-28 09:39    Length: 36 byte(s)
[Original] [Print] [Top]
Linux也支持
看上面我的回复
----
[Original] [Print] [Top]
Subject: Re: 如何锁住文件?
Author: zhangxp    Posted: 2005-10-28 11:22    Length: 31 byte(s)
[Original] [Print] [Top]
i know

thx
----
有花摘时堪需折 莫待花落空折枝
[Original] [Print] [Top]
Subject: Re: 如何锁住文件?
Author: normalnotebook    Posted: 2005-10-28 23:28    Length: 194 byte(s)
[Original] [Print] [Top]
谢谢你的回复。让我懂了不少。
我按照你的方法,做了试验。在read/write时,会阻塞,但没有报错。


我现在想要的效果是再次open时,就报错,好像达不到这个效果,是吗?
[Original] [Print] [Top]
Subject: Re: 如何锁住文件?
Author: zhllg    Posted: 2005-10-28 23:47    Length: 155 byte(s)
[Original] [Print] [Top]
前面我说的不全面,sorry
read/write时,如果文件是以非阻塞方式打开的,才会立刻返回错误并设置errno

lock不会影响文件是否可以被打开
----
[Original] [Print] [Top]
« Previous thread
如何读取目录?
C/C++编程版
23
Next thread »
如何知道linux系统可以接受的最大socket连接数?
     

Copyright © 2007 UNIX Resources Network, All Rights Reserved.      About URN | Privacy & Legal | Help | Contact us
备案序号: 京ICP备05006143    webmaster: webmaster@unixresources.net
This page created on 2008-07-17 03:52:29, cost 0.040478944778442 ms.