在Mac OS X中强制文件锁定

3 c unix macos bash file

根据man页面,以下方法仅支持建议锁定:flock,lockffcntl.是否有任何方法可以通过单个进程强制锁定某个文件,例如使用写锁定,以便其他进程无法使用写入权限打开此文件?

Die*_*Epp 6

不可以.Unix系列中的操作系统通常不支持强制文件锁定1.这包括Linux,BSD和OS X.

在某些Unix上,如果它们是当前正在运行的可执行映像,则无法打开要写入的文件; open()会失败的ETXTBSY.但是,您可以随时取消链接(删除)文件并创建一个新文件,但没有任何东西可以阻止它.

脚注

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