【问题标题】:What happens if another process tries to write to a flock(2)'d file?如果另一个进程试图写入 flock(2) 的文件会发生什么?
【发布时间】:2014-07-28 03:02:08
【问题描述】:

具体来说,如果以下事件按给定顺序发生:

  1. 进程 1 以附加模式打开文件。
  2. 进程 2 以追加模式打开同一个文件。
  3. 进程 2 使用文件描述符上的flock(2) 获得排他锁。
  4. 进程 1 尝试写入文件。

会发生什么?

写操作会立即返回一个指示失败的代码吗?会不会一直挂到释放锁,然后写入,返回成功?行为是否因内核而异?文档没有涵盖这种情况似乎很奇怪。

(我可以编写几个流程在我的系统上对其进行测试,但我不知道我的测试是否能代表一般情况,如果有人知道,我可以预料这个答案为很多其他人节省了大量时间。)

【问题讨论】:

    标签: file-locking flock


    【解决方案1】:

    写入正常进行。 flock 提供咨询锁定。 only 以独占方式锁定文件可防止其他人获得对同一文件的共享或独占锁定。 flock 以外的呼叫不受影响。

    【讨论】:

    • 啊...嗯,这很不幸。不过谢谢。一旦允许,我会在大约 10 分钟内接受这个答案。
    猜你喜欢
    • 2016-12-12
    • 1970-01-01
    • 2015-02-16
    • 2011-04-19
    • 2011-06-04
    • 2021-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多