免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: cdsfiui
打印 上一主题 下一主题

[Linux] 强制锁没有起作用,为什么? [复制链接]

论坛徽章:
2
2015年迎新春徽章
日期:2015-03-04 10:16:532015元宵节徽章
日期:2015-03-06 15:53:22
11 [报告]
发表于 2015-10-23 11:24 |只看该作者
本帖最后由 cdsfiui 于 2015-10-23 11:29 编辑

回复 10# darling54454


    这个回复非常棒,我在书上找了半天都没有找到hehe
不过,我即使把程序改成了:

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<sys/stat.h>
  4. #include<sys/types.h>
  5. #include<fcntl.h>
  6. #include<dirent.h>
  7. #include<sys/file.h>
  8. #include<unistd.h>
  9. int main()
  10. {
  11.   int fd=open("mandatory.txt",O_RDWR);
  12.   struct flock lk;
  13.   lk.l_type=F_WRLCK;
  14.   lk.l_start=0;
  15.   lk.l_whence=SEEK_SET;
  16.   lk.l_len=0;
  17.   lk.l_pid=getpid();
  18.   int flag=fcntl(fd,F_SETLKW,&lk);
  19.   struct stat statbuf;
  20.   fstat(fd,&statbuf);
  21.   fchmod(fd,(statbuf.st_mode&~S_IXGRP)|S_ISGID);//你说的要用fchmod
  22.   printf("%d\n",flag);
  23.   getchar();//运行到这里的时候,我新开一个shell窗口
  24.   close(fd);
  25.   return 0;
  26. }
复制代码
我在1L观察到的问题仍然存在啊,文件并没有被锁住,其他的shell还是能写它。
为什么呢?

论坛徽章:
2
2015年迎新春徽章
日期:2015-03-04 10:16:532015元宵节徽章
日期:2015-03-06 15:53:22
12 [报告]
发表于 2015-10-26 15:01 |只看该作者
有人回答一下吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP