笔记:linux程序设计:文件锁定

文件锁定是多用户多任务操作系统的一个重要组成部分

linux提供了多种特性来实现文件锁定,下面是两种不叫常用的方法:

1.最简单的方法是创建锁文件

  创建锁文件时,系统将不允许任何其他的事情发生

  为了创建锁文件我们使用在fcntl.h头文件中定义的带O_CREAT和O_EXCL标志的open系统调用

  例如:创建test.test锁文件并赋予权限

  int file_desc;

  file_desc = open("test.test", O_RSWR | O_CREAT | O_EXCL, 0444);

  用unlink来删除锁文件,例如删除上面建的锁文件:

  unlink(file_desc);

2.锁定文件区域

  使用在fcntl.h中的fcntl,函数原型为:

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


  command包含:

  F_GETLK:获得fildes打开文件的锁信息

  F_SETLK:对fildes指向的文件的某个区域加锁或解锁

  F_SETLKW:同F_SETLK,但无法获得锁时将一直等待直到可以为止


  flock结构依赖于具体实现,但至少要包含下列成员:

  short l_type;

  short l_whence;

  off_t  l_start;

  off_t  l_len;

  pid_t  l_pid;


  l_type的取值在头文件fcntl.h中定义:

  F_RDLCK:共享锁

  F_UNLCK:解锁

  F_WRLCK:独占锁


详情见《linux程序设计》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值