4

假设系统由于停电而意外断电。

系统启动时,flock 是否总是被认为是“解锁”的?

在 Linux 上,flock 依赖于 fcntl(...) (文件描述符)。

flock -u <lock_filename>换个方式问:系统第一次启动时,是不是不需要手动调用?(即来自 cron @reboot)?

更新

BSD 羊群手册页说:

Locks are on files, not file descriptors.   That is, file descriptors
duplicated  through dup(2) or fork(2) do not result in multiple instances
of  a lock, but rather multiple references to a single lock.
4

2 回答 2

2

我的 Linux 大师朋友在这里提到有一个内核锁表(用于文件锁)(通常存储在内存中),它会在重新启动时消失。

只要进程正在运行,文件锁就一直存在。

于 2014-09-17T21:58:40.033 回答
-1

根据linux手册页:

由flock() 创建的锁与打开的文件表条目相关联。

这是内核内存中的数据结构,而不是可能位于永久磁盘存储上的文件系统中的数据结构。

当进程退出时,打开的文件会被关闭——因此,flock 只有在持有它的进程正在运行时才有效。

于 2013-11-29T06:28:42.970 回答