POSIX文件锁是否可以重入?

时间:2012-11-04 15:42:34

标签: c unix locking posix fcntl

我通过fcntl使用POSIX 强制文件锁。我想知道那些锁是否是可重入的,即。一个进程可以获得它已经拥有的锁吗?

1 个答案:

答案 0 :(得分:4)

通过fcntl的通知锁在每个进程基础上,只是在给定进程的文件上累积锁定的时间间隔。也就是说,由应用程序来跟踪间隔,并且对于间隔的任何解锁调用都将解锁它,无论对该间隔进行了多少次锁定调用。

更糟糕的是,关闭文件的任何文件描述符会取消文件上的所有锁定:

  

除了被显式F_UNLCK删除外,还有记录锁   在进程终止或关闭进程时自动释放          文件描述符,指向保存锁的文件。这很糟糕:这意味着进程可能会丢失锁定   像文件一样          / etc / passwd或/ etc / mtab由于某种原因,库函数决定打开,读取和关闭它。