【问题标题】:Mandatory file locking in Mac OS XMac OS X 中的强制文件锁定
【发布时间】:2012-11-16 05:19:56
【问题描述】:

根据man 页面,以下方法仅支持建议锁定:flocklockffcntl。有没有办法通过单个进程强制锁定某个文件,例如使用写锁定,以便其他进程无法使用写权限打开该文件?

【问题讨论】:

    标签: c macos file bash unix


    【解决方案1】:

    没有。 Unix 系列中的操作系统通常不支持强制文件锁定1。这包括 Linux、BSD 和 OS X。

    在某些 Unix 上,如果文件是当前正在运行的可执行映像,您将无法打开文件进行写入; open() 将失败并显示 ETXTBSY。但是,您始终可以取消链接(删除)文件并创建一个新文件,没有什么可以阻止的。

    脚注

    1:这并不完全正确,但强制文件锁需要一些工作,强制锁是特定于平台的,OS X 不支持它们。

    【讨论】:

    • 我目前的研究也证实了这一点。
    • Mac OS X 10.10 (Yosemite) 仍然不支持强制锁定文件(例如,通过将模式设置为 2644),这与其他一些系统不同。 POSIX 不需要强制文件锁定,但 SVR4 系统支持。
    猜你喜欢
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-10
    相关资源
    最近更新 更多