英语法语西班牙语

Ad


OnWorks 网站图标

with-lock-ex - 云端在线

在 OnWorks 免费托管服务提供商中通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器运行 with-lock-ex

这是带有-lock-ex 的命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

您的姓名


with-lock-ex - 文件柜

概要


带锁前 -w|-q|-f 锁文件 命令 ARGS ...

商品描述


with-lock-ex 将打开并锁定锁定文件以进行写入,然后提供剩余的
它的论点 EXEC(2); 当该进程终止时,fd 将关闭并且文件
由内核自动解锁。

如果文件不存在,则创建它,并具有权限 rw 对于每个用户类
umask 有哪些 w.

配置


-w 等待锁可用。

-f 如果无法获取锁,则失败(向 stderr 打印消息并退出 255)
立即因为另一个进程拥有它。

-q 静默什么都不做(即退出 0 而不是执行指定的进程),如果
不能立即获取锁,因为另一个进程拥有它。

陈旧


使用的锁定协议不会受到过时锁定的影响。 如果锁不能
获得,一个或多个正在运行的进程当前必须持有锁; 如果锁需要
释放这些进程应该被杀死。

在任何情况下都不应建立“陈旧的锁清理器”cron 作业等。
在可能存在大量锁的系统中,旧的锁文件可能会从 cron 中删除,但
只有在删除锁文件之前获取每个锁,例如

带锁前 -q 锁文件 rm 锁文件

死锁


没有死锁检测。 在具有多个锁的系统中,锁层次结构应该
被建立,这样对于每对锁 AB 一个进程可能会锁定哪个
同时,要么 A>B or B>A 其中关系 > 是可传递的和非循环的。

那么,对于任意两个锁 XY X>Y 禁止获取 X 按住时 Y.
相反,获得 X 首先,或释放 Y 在(重新)获得之前 XY 以该顺序。

(有更复杂的避免死锁的方法,但锁层次结构很简单
理解并执行。 如果它不能满足您的需求,请查阅文献。)

锁定 外交协定


使用的锁定协议 带锁前 如下:

该锁由持有 fcntl 排他锁的进程(或进程组)持有
在具有指定名称的纯文件的第一个字节上。 锁的持有人
(并且只有锁的持有者)可以删除文件或更改名称的 inode
指的是,一旦这样做,它就会停止持有锁。

如果文件不存在,任何进程都可以创建该文件。 文件不需要
包含任何实际数据。 确实,实际上使用文件进行数据存储是强烈的
不推荐,因为这将排除大多数可靠更新的策略。 用一个
取而代之的是单独的锁文件。

获得锁的能力对应于对文件的写权限(当然
创建文件的权限(如果文件不存在)。 然而,过程与
只有对文件的读权限才能完全阻止获取锁; 所以
锁文件通常不应该是世界可读的。

当一个(一组)进程希望获得锁时,它应该打开文件(用
O_CREAT) 并将其锁定 控制面板(2) F_RWLCK, 手术 F_SETLK or F_SETLKW。 如果这
成功它应该 fstat 它拥有的文件描述符,以及文件的路径。 如果
设备和 inode 匹配,则锁定已被获取并保持获取状态,直到
进程组更改名称所指的文件、删除文件或释放
fcntl 锁。 如果他们不这样做,则另一个进程获取了锁并删除了
同时存档; 您现在必须关闭文件描述符并重新开始。 带锁-
ex 遵循本规范。

需要注意的是 羊群(2) 是一种不同的锁 控制面板(2)。 带锁前 使用 控制面板.

使用 onworks.net 服务在线使用 with-lock-ex


免费服务器和工作站

下载 Windows 和 Linux 应用程序

Linux 命令

Ad