您正在使用-n,如果无法立即获取锁定将终止,并且flock将以退出代码1失败.因此,在第一个终端中执行代码后,它会休眠100秒.接下来当你在另一个终端中执行相同的操作时,flock会失败并返回1,但是因为有一个;并且您不对返回代码执行任何操作,shell只是继续执行下一个语句并休眠100秒.

因此,您需要对flock的返回码做出如下决定.

( flock -x -n 100 || exit 55; sleep 100; ) 100> /tmp/foo.txt

现在,如果您在一个终端中执行上述行,它将休眠100秒.接下来,如果您在另一个终端上运行代码,它将立即返回提示.回声$?然后你会看到它已经返回55,因为我们想要使用||返回.

什么||确实是短路的.如果flock在正常退出时返回0,这是shell的真值,它将不执行表达式的右侧,因此转到下一个语句.如果返回值为1,对于shell为false,它将继续计算右侧表达式,即出口55,因此退出.你也可以通过if-then-fi来做到这一点.

另请注意,我使用了bracket()而不是花括号{}.这是因为,如果你使用curley-braces,那么命令将在当前shell中执行,如果你使用exit,那么它将从当前shell退出.括号将创建一个子shell,因此从那里执行退出会终止子shell并返回到原始shell.

它适用于您使用-c的第一个示例,因为您在flock参数中包含了单个命令.因此,如果flockis无法获取锁定,它将不会执行语句并终止.

linux 临时文件 锁,linux – 无法使用文件描述符flock锁定文件相关推荐

  1. linux文件描述符与标识符,文件描述符fd

    这里以问答的方式来讨论这个问题: 1. 文件描述符 fd 和文件指针 FILE *的关系? 文件描述符是什么?我们知道每一个进程都有一个自己的PCB(进程控制块),进程控制块的结构是: struct ...

  2. Linux中的文件描述符与打开文件之间的关系

    1. 概述 在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件.目录文件.链接文件和设备文件.文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,其是 ...

  3. linux c中的文件描述符与打开文件之间的关系

    转载请说明出处:http://blog.csdn.net/cywosp/article/details/38965239 1. 概述     在Linux系统中一切皆可以看成是文件,文件又可分为:普通 ...

  4. linux 文件指针,Linux中文件描述符fd与文件指针FILE*互相转换实例解析

    本文研究的主要是Linux中文件描述符fd与文件指针FILE*互相转换的相关内容,具体介绍如下. 1.文件描述符fd的定义:文件描述符在形式上是一个非负整数.实际上,它是一个索引值,指向内核为每一个进 ...

  5. Linux下多个进程可以同时打开同一个文件吗?文件描述符与打开文件的关系?

    一:结论 1.两个进程中分别产生生成两个独立的fd 2.两个进程可以任意对文件进行读写操作,操作系统并不保证写的原子性 3.进程可以通过系统调用对文件加锁,从而实现对文件内容的保护 4.任何一个进程删 ...

  6. 文件描述符fd和文件指针File* fp的区别和转换

    在linux系统中把设备和普通文件也都看做是文件,要对文件进行操作就必须先打开文件,打开文件后会得到一个文件描述符,它是一个很小的正整数,是一个索引值.  内核会为每一个运行中的进程在进程控制块pcb ...

  7. 文件描述符与打开文件的关系

    所有执行I/O操作的系统调用都以文件描述符,即一个非负整数来指代所打开的文件.文件描述符可以用来表示所有类型的已打开文件.同时,多个文件描述符可以指向同一个打开文件,因为有在不同进程中打开同一个文件的 ...

  8. 《Python Cookbook 3rd》笔记(5.18):将文件描述符包装成文件对象

    将文件描述符包装成文件对象 问题 你有一个对应于操作系统上一个已打开的 I/O 通道 (比如文件.管道.套接字等)的整型文件描述符,你想将它包装成一个更高层的 Python 文件对象. 解法 一个文件 ...

  9. linux中文件描述符fd和文件指针flip的理解

    整理自:http://www.cnblogs.com/Jezze/archive/2011/12/23/2299861.html 简单归纳:fd(file descriptor)只是一个整数,在ope ...

最新文章

  1. Intel Realsense D435 hardware_reset() 摄像头重置记录 context.query_devices()
  2. 河北计算机一级考试题库操作题,年河北计算机一级操作题题库及答案.doc
  3. android服务自动重启,安卓service关闭后怎么自动重启
  4. AUTOSAR从入门到精通100讲(五)-汽车LIN总线详解
  5. ASP获取上月本月下月的第一天和最后一天
  6. 转移符 个人工作中使用记录一下
  7. razor读取mysql_MVC 数据库增删改查(Razor)方法(1)和数据库
  8. Android 数据存储/访问 之 SharedPreferences(偏好设定)
  9. uni-app 引入本地iconfont的正确姿势以及阿里图标引入
  10. 2008-03-18 中午日出傍晚雨
  11. Mac的开机启动项如何关闭?
  12. HTML+CSS案例京东静态界面
  13. macOS系统怎么本地运行php文件
  14. 软件测试周刊(第22期):只要我自己躺下,就没人能把我打倒。
  15. 做了五年Android,我顿悟了...
  16. c++ 读取csv文件格式点云
  17. 【微电网优化】基于matlab粒子群算法求解微网经济调度和环境友好调度优化问题【含Matlab源码 2283期】
  18. CAD安装1606错误could access network location AutoDesk\AutoCAD2021\R24.0
  19. C# Tips之EmguCV(一)
  20. HTML添加图片,链接

热门文章

  1. 年初新立Flag,新华三解决方案部做了点儿啥?
  2. 英特尔助力金山云带你畅游云端的游戏世界
  3. cv曲线面积的意义_几何直觉的魅力:sinx曲线下的面积原理是如此的美妙
  4. python随机森林特征重要性_Python中随机森林回归的特征重要性
  5. java reader utf-8_解決BufferedReader读取UTF-8文件中文乱码(转)
  6. RabbitMQ管控台操作手册
  7. Mybatis Generator 配置详解
  8. SpringBoot整合Redis(单机/哨兵/集群)
  9. java synchronized块_Java多线程同步代码块Synchronized
  10. python autohotkey_PyAutoGUI-python版的autoit/AHK