【发布时间】:2012-11-16 05:19:56
【问题描述】:
根据man 页面,以下方法仅支持建议锁定:flock、lockf 和fcntl。有没有办法通过单个进程强制锁定某个文件,例如使用写锁定,以便其他进程无法使用写权限打开该文件?
【问题讨论】:
根据man 页面,以下方法仅支持建议锁定:flock、lockf 和fcntl。有没有办法通过单个进程强制锁定某个文件,例如使用写锁定,以便其他进程无法使用写权限打开该文件?
【问题讨论】:
没有。 Unix 系列中的操作系统通常不支持强制文件锁定1。这包括 Linux、BSD 和 OS X。
在某些 Unix 上,如果文件是当前正在运行的可执行映像,您将无法打开文件进行写入; open() 将失败并显示 ETXTBSY。但是,您始终可以取消链接(删除)文件并创建一个新文件,没有什么可以阻止的。
1:这并不完全正确,但强制文件锁需要一些工作,强制锁是特定于平台的,OS X 不支持它们。
【讨论】: