文件锁定

文件锁定是多任务操作系统中一个非常重要的组成部分。程序通常需要共享数据,而通常是通过文件来实现的。

创建锁文件

许多应用程序只要能够针对某个资源创建一个锁文件即可。然后,其他程序就可以通过检查这个文件的状态来判断它们自己

是否被允许访问这个资源。(锁文件仅仅只是充当一个指示器的角色,程序需要通过相互协作来使用它们)

实例:

#include

#include

#include

#include

#include

int main()

{

int file_desc;

int save_errno;

file_desc=open("/tmp/LCK.test",ORDWR | O_CREAT | O_EXCL,0444);

if(file_desc == -1)

{

save_errno = errno;

printf("open failed with error %d/n",save_errno);

}

else

printf("open succeed/n");

exit (EXIT_SUCCESS);

}

第一次运行程序

open  succeeded

再次运行

open failed with error 17

锁定区域

用创建件锁文件的办法来控制诸如串口之类的资源的独占实访问是一个不错的选择,但他并不适合用于访问大型的共享文件。

比如,你有一个大文件,由一个程序写入数据,但同时又有许多不同的程序同时对这个文件进行更新。这个时候,我们可以通过

锁定区域来解决这个问题,文件部分被锁定,但其他程序可以访问这个文件的其他部分。linux提供至少两种方式来完成这一工作

使用fcntl系统调用和lockf调用。现在我们来介绍fcntl接口:

fcntl接口 定义:

#include

int fcntl (int fildes,int command,struct flock *flock_structure);

fcntl对一个打开的文件描述符进行操作,并能根据command参数的设置完成不同的任务。他为我们提供来三个用于文件锁的命令:

F_GETLK                 //获取文件锁的信息

F_SETLK                  //设置文件锁定的状态

F_SETLKW             //设置文件锁定的状态,但是无法建立锁定是,此调用会一直等到锁定动作成功为止

flock结构 定义如下:

struct flock{

short int l_type;                   //锁定的状态

short int l_whence;            //决定l_stat的位置

off_t    l_start;                      //锁定区域的开始位置

off_t    l_len;                        //锁定区域的大小

pid_t    l_pid;                       //锁定动作的进程

}

linux文件是否锁定,linux 文件锁定相关推荐

  1. Linux的chattr与lsattr命令详解(重点-i参数,锁定文件,禁止修改文件)

    PS:有时候你发现用root权限都不能修改某个文件,大部分原因是曾经用chattr命令锁定该文件了.chattr命令的作用很大,其中一些功能是由Linux内核版本来支持的,不过现在生产绝大部分跑的li ...

  2. linux 锁定重要文件 更改重要命令

    锁定重要文件如下: chattr +i /etc/passwd /etc/shadow /etc/groupp /etc/gshadow 解锁文件 chattr -i /etc/passwd /etc ...

  3. linux目录结构   各个目录文件作用

     linux 目录结构 /: 根目录,一般根目录下只存放目录,不要存放文件,/etc./bin./dev./lib./sbin应该和根目录放置在一个分区中 /bin:/usr/bin: 可执行二进制文 ...

  4. 10.30 linux和windows互传文件,用户配置文件和密码配置文件,用户组管理,用户管理...

    2019独角兽企业重金招聘Python工程师标准>>> 2.27 linux和windows互传文件 putty不支持  xshell和securecrt支持 如果是centos系统 ...

  5. Linux学习笔记三【文件及目录的权限管理篇】

    文件及目录的权限管理 上篇简单介绍了下文件和目录的一些简单的操作,接下来介绍用户和文件权限的管理.首先了解用户和组账号的配置文件,然后是管理用户和组账号,最后要会设置文件和目录权限和归属. Linux ...

  6. linux 文件操作 编程,Linux系统编程------------文件操作(基础)

    一.文件操作 1.1 Linux文件系统结构 1.1.1  Linux常见系统目录 /bin  :  存放普通系统可执行的命令(ls wc等) /sbin  :  存放系统管理程序(fsck等) /b ...

  7. linux 文件类型 管理,Linux的文件类型及用户管理

    Linux的文件类型 -,f:普通文件 d:目录文件,路径映射 l:链接文件(符号链接)软连接 设备文件: c:字符设备,一次存取一个字符 b:块设备 p:管道文件 fi,fo s:套接字文件,soc ...

  8. 【Notes8】Linux开发环境,Linux命令,vi命令,/正则,Hash,iNode,文件查找与读取,Linux开机自启动

    文章目录 1.VMware和CentOS安装:两个网络适配器是虚拟机的,Linux抄袭unix,Mac os是unix的皮肤 2.CRT安装:netstat -nal | grep 22,改注册信息要 ...

  9. 【Linux】Linux用户、用户组、文件权限学习笔记

    原文地址:http://www.sourcejoy.com/other_dev_tech/linux-user-and-file-manage.html 作者:HaiHai 发布时间:August 1 ...

  10. Linux用户、用户组、文件权限设置

    最近打算更仔细学习一下linux操作系统.先是恶补了一下用户.用户组.文件权限这三样比较重要的知识.(我也正在学Linux,所以就找到这篇日志了,有些设置修改后需要重启系统后才能生效.) 学习这几样东 ...

最新文章

  1. 【大数据教程】MapReduce基本架构、统计文件中每个字符出现的次数,IP去重、计算每个人的最高分,总分
  2. 初步认识Volatile-MESI优化带来的可见性问题
  3. Xcode的简单使用
  4. 使用VHDL编程的直接扩频发生器
  5. 使用AirFlow调度MaxCompute
  6. ionic中定义路由的问题
  7. iOS 14.7 中的所有新功能
  8. html在线快递单号打印,HTML 快递打印模板
  9. rost反剽窃检测系统_学术不端检测规则是什么?
  10. 腾讯云Ubuntu服务器安装Python3.6的虚拟环境
  11. ttf字体文件裁剪,字体文件压缩,字体文件提取
  12. 编写测试报告,及测试报告模板
  13. 总结一下Android中主题(Theme)的正确玩法
  14. 微信小程序实现动态时间滚动
  15. Numpy掩码数组masked arrays
  16. 高三老师给大一学生的一封信
  17. 如何用Java读取单元格的数据_Java读取Excel中的单元格数据
  18. python中sha1 md5等用法
  19. Adobe PhotoShop安装程序无法初始化的解决办法
  20. 总结ctf中 MD5 绕过的一些思路

热门文章

  1. Python微信自动回复脚本
  2. 传统车道线检测之黄白线、虚实车道线检测(附python代码)
  3. 杨辉三角c语言实验收获体会,实验感想与心得体会简短
  4. 运放噪声频率曲线-运放噪声计算-运算放大器
  5. 不会拼音学计算机怎么写,不会拼音不会拼音怎怎么打字?
  6. ant如何形成时间轴和图库_弯弓新媒体创始人梅波:企业如何构建私域流量
  7. 360黑客攻防技术分享会
  8. jaxl php,php – jaxl无法连接到Prosody
  9. Linux中history命令增加时间显示
  10. python在文本添加超链接_在Markdown中快速插入超链接的Workflow