免费注册 查看新帖 |

Chinaunix

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

[桌面系统] 请求指导,关于文件锁的几行代码 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-07-25 16:15 |只看该作者 |倒序浏览
本帖最后由 xiaozhengshan 于 2014-07-25 16:39 编辑

#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<unistd.h>
#include<fcntl.h>

int main()
{       
        int fd=open("./1.c",O_WRONLY|O_CREAT);
        struct flock fk;
        fk.l_type=F_WRLCK;
        fk.l_whence=SEEK_SET;
        fk.l_start=0;
        fk.l_len=0;
        fk.l_pid=getpid();

        fcntl(fd,F_SETLK,&fk);
        sleep(2);
        fcntl(fd,F_GETLK,&fk);
       
        printf("F_WRLCK==%d \t F_RDLCK==%d",F_WRLCK,F_RDLCK);
        printf("\n");
        printf("after set ,fk.l_type=%d \n",fk.l_type);
        while(1)
                ;
       
        return 0;
}


在两个终端各自开一个进程运行该程序,为何一个拿到的锁类型是",fk.l_type=F_UNLCK(先执行的进程),一个拿到的锁类型是fk.l_type=F_WRLCK(后执行的进程)

论坛徽章:
0
2 [报告]
发表于 2014-07-25 16:17 |只看该作者
本希望的是,先执行的进程拿到文件写锁,后执行的获取写锁失败,有人愿意解释一下吗?新手求指导!

论坛徽章:
0
3 [报告]
发表于 2014-07-25 16:17 |只看该作者
1.c文件之前已经存在

论坛徽章:
0
4 [报告]
发表于 2014-07-26 11:10 |只看该作者
已知晓:wink::wink::wink:
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP