根据man
页面,以下方法仅支持建议锁定:flock
,lockf
和fcntl
。是否有任何方法可以通过单个进程强制锁定某个文件,例如使用写锁定,以便其他进程无法使用写入权限打开此文件?
答案 0 :(得分:6)
没有。 Unix系列中的操作系统通常不支持强制文件锁定 1 。这包括Linux,BSD和OS X.
在某些Unix上,如果它们是当前正在运行的可执行映像,则无法打开要写入的文件; open()
将失败ETXTBSY
。但是,您可以随时取消链接(删除)文件并创建一个新文件,但没有任何内容可以阻止该文件。
1 :这不完全正确,但强制文件锁需要一些工作,强制锁是特定于平台的,OS X不支持它们。