网站首页  |  幼儿教育  |  中小学教育  |  电脑教育  |  英语教育  |  教育论文  |  家长教育 设为首页加入收藏联系投稿 
 位置: 中国教育学习网 > 电脑教育 > 程序设计 > C语言 > 正文

文件加锁的例题示范

字号:   

以下例子示范了如何为文件建立独享锁:

#include<unistd.h>
#include<stdlib.h>
#include<stdio.h>
#include<fcntl.h>
#include<errno.h>

const char *lock_file="lock.test1";

int main()
{
int file_desc;
int tries=10;

while(tries--){
file_desc=open(lock_file,O_RDWR|O_CREAT|O_EXCL,0444);
if(file_desc==-1){
printf("%d - Lock already present
",getpid());
sleep(1);
} else {
printf("%d - I have exclusive access
",getpid());
sleep(1);
(void)close(file_desc);
(void)unlink(lock_file);
sleep(1);
}
}
exit(EXIT_SUCCESS);
}

要想看到加锁的效果,得运行:./lock&./lock
我在 Linux 下运行的结果:
[1] 18396
18396 - I have exclusive access
18397 - Lock already present
18397 - I have exclusive access
18396 - Lock already present
18396 - I have exclusive access
18397 - Lock already present
18397 - I have exclusive access
18396 - Lock already present
18396 - I have exclusive access
18397 - Lock already present
18397 - I have exclusive access
18396 - Lock already present
18396 - I have exclusive access
18397 - Lock already present
18397 - I have exclusive access
18396 - Lock already present
18396 - I have exclusive access
18397 - Lock already present
18397 - I have exclusive access
18396 - Lock already present
[1]+ Done ./lock

结果解析:第一个lock运行的进程号为18396,加锁成功后输出:I have exclusive access,然后休眠1秒,此时第二个lock开始运行,并试图给文件加锁但失败输出:Lock already present,并开始休眠1秒,之后第一个loxk苏醒并解锁,再休眠1秒,第二个lock运行加锁成功,如次反复运行10次..
收藏此文  |  打印  

 
  • 上一篇教程:

  • 下一篇教程:

  •   GoogLe
     
      最新推荐
  • 此栏目下没有推荐教程

  •   最近更新

      GoogLe

     
    Powered by Cn-Education.Com (c) 2005-2008 中国教育学习网 教育网站长QQ交流群60041790
    设为首页  |  加入收藏  |  版权申明  |  广告服务  |  联系我们  |  友情链接  |  网站地图  |  返回顶部 ↑