下面的Perl子例程使用File :: FcntlLock来检查文件是否被锁定.

为什么它返回0并且打印/tmp/test.pid被解锁.即使文件被锁定了?

sub getPidOwningLock {

my $filename = shift;

my $fs = new File::FcntlLock;

$fs->l_type( F_WRLCK );

$fs->l_whence( SEEK_SET );

$fs->l_start( 0 );

$fs->l_len( 0 );

my $fd;

if (!open($fd, '+

print "Could not open $filename\n";

return -1;

}

if (!$fs->lock($fd, F_GETLK)) {

print "Could not get lock information on $filename, error: $fs->error\n";

close($fd);

return -1;

}

close($fd);

if ($fs->l_type() == F_UNLCK) {

print "$filename is unlocked.\n";

return 0;

}

return $fs->l_pid();

}

该文件被锁定如下(lock.sh):

#!/bin/sh

(

flock -n 200

while true; do sleep 1; done

) 200>/tmp/test.pid

该文件确实已锁定:

~$./lock.sh &

[2] 16803

~$lsof /tmp/test.pid

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

bash 26002 admin 200w REG 8,5 0 584649 test.pid

sleep 26432 admin 200w REG 8,5 0 584649 test.pid

解除linux中文件被锁状态,linux – 为什么即使文件被锁定,File :: FcntlLock的l_type总是“F_UNLCK”?...相关推荐

  1. linux中的lock文件,linux – 为什么即使文件被锁定,File :: FcntlLock的l_type总是“F_UNLCK”?...

    下面的Perl子例程使用File :: FcntlLock来检查文件是否被锁定. 为什么它返回0并且打印/tmp/test.pid被解锁.即使文件被锁定了? sub getPidOwningLock ...

  2. Linux中的各种锁及其基本原理

    Linux中的各种锁及其基本原理 0.概述 通过本文将了解到如下内容: Linux系统的并行性特征 互斥和同步机制 Linux中常用锁的基本特性 互斥锁和条件变量 1.Linux的并行性特征 Linu ...

  3. linux中etc下的hosts(本地IP解析)文件详解

    linux中etc下的hosts(本地IP解析)文件详解 1./etc/hosts(本地解析) 很多人一提到更改hostname首先就想到修改/etc/hosts文件, 认为hostname的配置文件 ...

  4. linux more 乱码,Linux 中vim/more/cat/tail/head 命令查看文件显示乱码

    Linux 中 vim/more/cat/tail/head 命令查看文件显示乱码,乱码原因:Linux默认字符集码为 UTF-8 ,有些其它字库未安装 解决方法: 1)临时解决方法将当前文件强制使用 ...

  5. c语言open函数打开文件方式,Linux中C语言open函数打开或创建文件详细讲解

    Linux中C语言open函数打开或创建文件详细讲解 Linux中C语言open函数打开或创建文件详细讲解 头文件: #include #include #include 函数原型: int open ...

  6. 19. linux中权限详解,Linux权限位,读写执行权限真正含义,chmod详解

    linux中权限详解,Linux权限位,读写执行权限真正含义,chmod详解 文章目录 Linux权限位 读写执行 三种权限真正含义和作用 权限对文件的作用 权限对目录的作用 示例 chmod 使用数 ...

  7. linux中_Linux基础知识(Linux系统、Linux中的链表)

    Linux系统简介 Linux系统的结构及特点 Linux系统的结构图如下图所示: 从上图可以看出,Linux是一个典型的宏内核(一体化内核)结构.硬件系统上面时硬件抽象层,在硬件抽象层上面时内核服务 ...

  8. centos sudo不能运行_如何在 Linux 中配置 sudo 访问权限 | Linux 中国

    Linux 系统中 root 用户拥有 Linux 中全部控制权力.Linux 系统中 root 是拥有最高权力的用户,可以在系统中实施任意的行为.-- Magesh Maruthamuthu Lin ...

  9. linux取证教程,Linux中的取证(Forensics in Linux)

    Linux中的取证(Forensics in Linux) 数字调查的主要问题是通过加密或任何其他格式保护重要证据或数据. 基本示例是存储密码. 因此,有必要了解Linux操作系统在数字取证实施中的使 ...

最新文章

  1. 微信小游戏开发教程-2D游戏原理讲解
  2. ROS 总结(一):ROS系统框架
  3. [Caffe]:关于*** Aborted at 1479432790 (unix time) try date -d @1479432790 错误的另一种原因
  4. GenericUDAF使用流程记载(转载+自己整理)
  5. python设计模式20-状态模式
  6. Learning Video Object Segmentation from Static Images
  7. 计算机主机系统构成,一个完整的计算机系统通常是由()构成。A.硬件B.主机C.软件D.操作系统...
  8. HTML5 Canvas JavaScript库 Fabric.js 使用经验
  9. 数字盲打怎么练_数字键盘区的功能及指法技巧
  10. ValueError: Expected more than 1 value per channel when training, got input size torch.Size([1, 2, 1
  11. js中获取当前url路径
  12. 计算机视觉教程1-1:透视空间与透视变换
  13. Python 爬虫——爬取文章自动发送QQ群
  14. linux根据修改日期删除,在Linux下怎么一次性删除掉那些修改时间为指定日期的所有文件?...
  15. Elasticsearch教程部署使用
  16. tensorflow自定义GPU版本op节点
  17. OpenLayers中文文档2栅格重投影
  18. 安装前端编辑器HBuilderX
  19. 5G基站辐射致癌?一个源自19年前的某权威报告引发的谣言
  20. 自动驾驶 | SIL测试简单介绍

热门文章

  1. 使用Redis中hscan的坑
  2. 游览器、兼容(五大游览器内核)
  3. PAT Basic Level 1027 打印沙漏 解题思路及AC代码
  4. ubuntu + eigen3 安装(解决 fatal error: Eigen/Core: No such file or directory)
  5. MySQL5.7自带分词搜索使用
  6. vs开发,添加try catch(...)发现没有捕获异常,需要对编译命令进行设置
  7. 厚积薄发打卡Day55 :[狂神]Redis详细教程(上)<从Nosql 概述到WSL安装Redis踩坑记录>
  8. “三网融合”的过去、现在与未来
  9. android学习笔记----ListView和各种适配器简介
  10. Web前端学习笔记——HTML5与CSS3之购物车宣传案例