在NFS上flock(2)与fcntl(2)

Modified on: Sat, 30 Jun 2018 05:46:30 +0800

Perl 5.x文档指出它的flock(..)实现将使用以下本机调用之一,从1开始,如果不可用则向3工作:

  1. 群(2)
  2. 的fcntl(2)
  3. 提供lockf(3)
  4. 醇>

    没关系。但是,您可能已经注意到他们的免责声明不应该在NFS上使用flock(2)。该文档建议使用-Ud_flock标志强制Perl使用flock(2)。 flock(2)的手册页(在Redhat上)陈述了类似的关于NFS问题的免责声明。

    我的问题是,为什么!?!?我似乎无法找到一篇深入的文章或解释为什么flock(2)对NFS不安全。

    我在C和Perl上编写了几个测试脚本,在Redhat(使用flock(2))和Solaris(使用fcntl(2))上。我运行strace / truss以确保Perl确实分别使用了flock(2)和fcntl(2)。我无法复制任何锁没有被尊重的问题!什么给了??

最佳答案

Lennart Poettering最近对linux文件系统锁定行为进行了一些挖掘,这并未描绘出锁定NFS的特别美好的画面(特别是他链接到帖子底部的后续行动)。

http://0pointer.de/blog/projects/locking.html < / p>

作者:Ivatar

相关问答

添加新评论