fcntl使用的例子 (源自 嵌入式Linux 应用程序开发详解)

在Linux中,实现文件上锁的函数有lock和fcntl,其中lock用于对文件施加建议性锁,而fcntl不仅可以施加强制性锁,还可以施加建议性锁。同时fcntl还能文件的某一记录进行上锁,也就是记录锁。

 

记录锁又分为读取锁和写入锁,其中读取锁又称为共享锁。它能使多个进程都能在文件的统一部分建立读取锁。而写入锁又称为排斥锁,在任何时刻只有一个进程在文件的某个部分上建立写入锁。当然文件的统一部分不能同时建立读取锁和写入锁。

强制性锁是由内核执行的锁,当一个文件被上锁进行写入操作时,内核将阻止其他任何文件对其进行读写操作。

int  fcntl( int fd, int cmd, struct flock *lock )

fd    :文件描述符

cmd:

lock:结构为flock,设置记录锁的具体状态。

返回值:成功:0

            -1,出错。

 

struck flock{

 

   short l_type;

   off_t l_start;

   short l_whence;

   off_t  l_len;

   pid_t  l_pid;

}

 

 

l_type  : F_RDLCK   F_WRLCK  F_UNLCK

l_stat   :相对位移量

l_whence : SEEK_SET  SEEK_END  SEEK_CUR

l_len : 加锁区域的长度;

为了加锁整个文件,通常的方法是将l_start说明为0,l_whence 说明为SEEK_SET.l_len 说明为0。

 

 

 

 

 

 

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值