假设系统因停电而意外断电。
系统启动时是否始终认为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.
答案 0 :(得分:0)
我的Linux大师朋友在这里提到有一个内核锁表(用于文件锁)(通常存储在内存中),它会在重启时消失。
只要进程正在运行,文件锁就在那里。
答案 1 :(得分:-1)
根据linux手册页:
flock()创建的锁与打开的文件表条目相关联。
This is a data structure in the kernels memory,而不是可能在永久磁盘存储上的文件系统。
当进程退出时,打开的文件将被关闭 - 因此只有持有它的进程正在运行时,flocks才有效。