linux 临时文件 锁,linux – 无法使用文件描述符flock锁定文件
您正在使用-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锁定文件相关推荐
- linux文件描述符与标识符,文件描述符fd
这里以问答的方式来讨论这个问题: 1. 文件描述符 fd 和文件指针 FILE *的关系? 文件描述符是什么?我们知道每一个进程都有一个自己的PCB(进程控制块),进程控制块的结构是: struct ...
- Linux中的文件描述符与打开文件之间的关系
1. 概述 在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件.目录文件.链接文件和设备文件.文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,其是 ...
- linux c中的文件描述符与打开文件之间的关系
转载请说明出处:http://blog.csdn.net/cywosp/article/details/38965239 1. 概述 在Linux系统中一切皆可以看成是文件,文件又可分为:普通 ...
- linux 文件指针,Linux中文件描述符fd与文件指针FILE*互相转换实例解析
本文研究的主要是Linux中文件描述符fd与文件指针FILE*互相转换的相关内容,具体介绍如下. 1.文件描述符fd的定义:文件描述符在形式上是一个非负整数.实际上,它是一个索引值,指向内核为每一个进 ...
- Linux下多个进程可以同时打开同一个文件吗?文件描述符与打开文件的关系?
一:结论 1.两个进程中分别产生生成两个独立的fd 2.两个进程可以任意对文件进行读写操作,操作系统并不保证写的原子性 3.进程可以通过系统调用对文件加锁,从而实现对文件内容的保护 4.任何一个进程删 ...
- 文件描述符fd和文件指针File* fp的区别和转换
在linux系统中把设备和普通文件也都看做是文件,要对文件进行操作就必须先打开文件,打开文件后会得到一个文件描述符,它是一个很小的正整数,是一个索引值. 内核会为每一个运行中的进程在进程控制块pcb ...
- 文件描述符与打开文件的关系
所有执行I/O操作的系统调用都以文件描述符,即一个非负整数来指代所打开的文件.文件描述符可以用来表示所有类型的已打开文件.同时,多个文件描述符可以指向同一个打开文件,因为有在不同进程中打开同一个文件的 ...
- 《Python Cookbook 3rd》笔记(5.18):将文件描述符包装成文件对象
将文件描述符包装成文件对象 问题 你有一个对应于操作系统上一个已打开的 I/O 通道 (比如文件.管道.套接字等)的整型文件描述符,你想将它包装成一个更高层的 Python 文件对象. 解法 一个文件 ...
- linux中文件描述符fd和文件指针flip的理解
整理自:http://www.cnblogs.com/Jezze/archive/2011/12/23/2299861.html 简单归纳:fd(file descriptor)只是一个整数,在ope ...
最新文章
- Intel Realsense D435 hardware_reset() 摄像头重置记录 context.query_devices()
- 河北计算机一级考试题库操作题,年河北计算机一级操作题题库及答案.doc
- android服务自动重启,安卓service关闭后怎么自动重启
- AUTOSAR从入门到精通100讲(五)-汽车LIN总线详解
- ASP获取上月本月下月的第一天和最后一天
- 转移符 个人工作中使用记录一下
- razor读取mysql_MVC 数据库增删改查(Razor)方法(1)和数据库
- Android 数据存储/访问 之 SharedPreferences(偏好设定)
- uni-app 引入本地iconfont的正确姿势以及阿里图标引入
- 2008-03-18 中午日出傍晚雨
- Mac的开机启动项如何关闭?
- HTML+CSS案例京东静态界面
- macOS系统怎么本地运行php文件
- 软件测试周刊(第22期):只要我自己躺下,就没人能把我打倒。
- 做了五年Android,我顿悟了...
- c++ 读取csv文件格式点云
- 【微电网优化】基于matlab粒子群算法求解微网经济调度和环境友好调度优化问题【含Matlab源码 2283期】
- CAD安装1606错误could access network location AutoDesk\AutoCAD2021\R24.0
- C# Tips之EmguCV(一)
- HTML添加图片,链接
热门文章
- 年初新立Flag,新华三解决方案部做了点儿啥?
- 英特尔助力金山云带你畅游云端的游戏世界
- cv曲线面积的意义_几何直觉的魅力:sinx曲线下的面积原理是如此的美妙
- python随机森林特征重要性_Python中随机森林回归的特征重要性
- java reader utf-8_解決BufferedReader读取UTF-8文件中文乱码(转)
- RabbitMQ管控台操作手册
- Mybatis Generator 配置详解
- SpringBoot整合Redis(单机/哨兵/集群)
- java synchronized块_Java多线程同步代码块Synchronized
- python autohotkey_PyAutoGUI-python版的autoit/AHK