【问题标题】:How can I lock a directory in C on a linux machine如何在 Linux 机器上锁定 C 中的目录
【发布时间】:2012-02-07 16:06:47
【问题描述】:

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

【问题讨论】:

  • 您需要定义锁定的含义。
  • 只要将目录设为只读即可;这似乎最接近“锁定”目录的概念。
  • 为什么要锁定目录?

标签: linux locking directory flock


【解决方案1】:

是的,有关在文件/目录上使用flock的更多信息可以找到here

【讨论】:

    【解决方案2】:

    你不能打开一个目录来写,这意味着你不能得到一个写锁。

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

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

    【讨论】:

    • 你不需要打开它来写入以获得排他锁: $ mkdir testdir $ strace flock testdir -c 'echo foo' ... open("testdir", O_RDONLY|O_CREAT| O_NOCTTY, 0666) = -1 EISDIR (是一个目录) open("testdir", O_RDONLY|O_NOCTTY) = 3 flock(3, LOCK_EX) = 0 ...
    • 我对@9​​87654324@ 风格的锁进行了纠正。对于fcntl 风格的锁,您似乎确实需要写入权限才能请求写入锁。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-16
    • 1970-01-01
    • 2017-02-23
    • 1970-01-01
    • 1970-01-01
    • 2021-08-06
    相关资源
    最近更新 更多