我正在使用posix 强制性通过 fcntl
锁定文件。我想知道这些锁是否是重新进入的,即。一个过程可以获取它已经拥有的锁吗?
通过 fcntl
的咨询锁位于每个过程基础上,并且仅在文件上积累锁定间隔。也就是说,不管该间隔已进行了多少个锁定调用,都可以按照申请来跟踪间隔,任何解锁间隔都会解锁。
更糟糕的是,要关闭文件的任何文件描述符,该文件取消了文件上的所有锁:
以及被显式f_unlck删除的记录锁 该过程终止或关闭任何内容时会自动释放 文件描述符,涉及保留锁的文件。这是不好的:这意味着一个过程可能会丢失 像 /etc/passWD或/etc/mtab,由于某种原因,库功能决定打开,读取和关闭它。