系统重启后fl fllock会重置吗?

时间:2013-11-19 11:57:12

标签: flock

假设系统因停电而意外断电。

系统启动时是否始终认为flock锁定为“已解锁”?

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

问另一种方式:系统首次启动时是否无需手动调用flock -u <lock_filename>? (即来自cron @reboot)?

更新

BSD flock手册页说:

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.

2 个答案:

答案 0 :(得分:0)

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

只要进程正在运行,文件锁就在那里。

答案 1 :(得分:-1)

根据linux手册页:

  

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

This is a data structure in the kernels memory,而不是可能在永久磁盘存储上的文件系统。

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