如果另一个进程尝试写入flock(2)'d文件会发生什么?

时间:2014-06-06 18:44:01

标签: file-locking flock

具体而言,如果以给定顺序发生以下事件:

  1. 进程1以追加模式打开文件。
  2. 进程2以追加模式打开同一文件。
  3. 进程2使用文件描述符上的flock(2)获取独占锁。
  4. 进程1尝试写入文件。
  5. 会发生什么?

    写入是否会立即返回指示失败的代码?它会挂起,直到锁被释放,然后写入并返回成功?内核的行为是否有所不同?文档似乎没有涵盖这种情况,这似乎很奇怪。

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

1 个答案:

答案 0 :(得分:1)

写入正常进行。 flock提供顾问锁定。仅以 锁定文件可防止其他人对同一文件进行共享或独占锁定。 flock以外的通话不受影响。