如何在Linux机器上的C中锁定目录

use*_*498 6 linux directory locking flock

flock或lockf可以在目录上工作吗?我还有另一种方法可以在Linux机器上的C中锁定目录吗?

Cel*_*ada 1

您无法打开目录进行写入,因此这意味着您无法获得其写入锁定。

即使可以,请记住,flock其他fcntl类型的 POSIX 锁都是建议性的,因此它们实际上并不能阻止不尊重锁的软件执行操作。

也许您想看看xfs_freeze锁定整个文件系统之类的东西。但它可能对您的用例没有用。

  • 您无需打开它进行写入即可获得独占锁: $ mkdir testdir $ strace foltle testdir -c 'echo foo' ... open("testdir", O_RDONLY|O_CREAT|O_NOCTTY, 0666) = -1 EISDIR (是一个目录) open("testdir", O_RDONLY|O_NOCTTY) = 3集群(3, LOCK_EX) = 0 ... (2认同)