CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Linux/Unix社区 >  程序开发区

一个记录上锁的问题

楼主tb01412(tb)2005-02-04 19:33:35 在 Linux/Unix社区 / 程序开发区 提问

一个记录上锁的问题,有谁能告诉我怎样用?  
  就是一个程序一运行就的打开某个文件,不允许其它程序访问,下面的代码为何不行呢?  
   
  #include   <stdlib.h>  
  #include   <fcntl.h>  
  #include   <unistd.h>  
  #include   <sys/types.h>  
   
  struct   flock*   file_lock(short   type,   short   whence)  
            {  
                    static   struct   flock   ret   ;  
                    ret.l_type   =   type   ;  
                    ret.l_start   =   0   ;  
                    ret.l_whence   =   whence   ;  
                    ret.l_len   =   0   ;  
                    ret.l_pid   =   getpid()   ;  
                    return   &ret   ;  
            }  
   
   
  int   main()  
  {  
        int   pidfd;        
        pidfd=open("/etc/pidfile",O_CREAT);  
        fcntl(pidfd,   F_SETLKW,   file_lock(F_WRLCK,   SEEK_SET));    
    while(1)  
        {  
            sleep(1000);  
        }  
  }  
   
   
  执行了相面的程序后,依然可以访问/etc/pidfile,为什么?  
  问题点数:20、回复次数:5Top

1 楼nodummy(三甲 之 Linux/Unix里面甭给我分,谁给我分我和谁急)回复于 2005-02-04 19:41:50 得分 20

你用的flags是O_CREAT当然不行了,你用O_WRONLY看看,其他进程就不能访问了Top

2 楼tb01412(tb)回复于 2005-02-04 20:38:57 得分 0

但还是不行呢?  
  Top

3 楼nodummy(三甲 之 Linux/Unix里面甭给我分,谁给我分我和谁急)回复于 2005-02-04 21:53:41 得分 0

上面我搞错了,和那个没关系。但是这个所操作每次都返回-1,也就是设置失败了,不知道怎么回事?Top

4 楼nodummy(三甲 之 Linux/Unix里面甭给我分,谁给我分我和谁急)回复于 2005-02-04 21:58:34 得分 0

我修改了一下打开的参数,用了O_RDWR就成功了,其他的譬如O_RDONLY和O_WRONLY都失败了  
   
  不知道是不是有什么限制(不过是用flock就没有这个问题)Top

5 楼tb01412(tb)回复于 2005-02-05 18:34:02 得分 0

谢谢楼上的!Top

相关问题

  • 棘手的一个问题,有关 update上锁的问题,update 语句对表中记录修改时上exclusive锁!
  • 棘手的一个问题,有关 update上锁的问题,update 语句对表中记录修改时上exclusive锁!
  • 记录一下
  • 获取记录
  • oicq的记录?
  • 记录问题
  • 修改记录
  • 更新记录?
  • 记录顺序
  • 修改记录?

关键词

  • pidfd
  • whence
  • flock
  • ret
  • 程序
  • 问题
  • include
  • type

得分解答快速导航

  • 帖主:tb01412
  • nodummy

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo