Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
根据man页面,以下方法仅支持建议锁定flock:lockf和fcntl。有没有办法通过单个进程强制锁定某个文件,例如使用写锁定,以便其他进程无法使用写权限打开该文件?
man
flock
lockf
fcntl
不可以。Unix 系列中的操作系统通常不支持强制文件锁定1。这包括 Linux、BSD 和 OS X。
在某些 Unix 上,如果文件是当前正在运行的可执行映像,您将无法打开文件进行写入;open()将失败ETXTBSY。但是,您始终可以取消链接(删除)文件并创建一个新文件,没有什么可以阻止它。
open()
ETXTBSY
1:这并不完全正确,但是强制文件锁需要一些工作,强制锁是特定于平台的,OS X 不支持它们。