use*_*104 14
fcntl()是一个可供选择的API,因为它是最少破坏的并且是POSIX.它是唯一一个跨NFS工作的.这也说是一场彻底的灾难,因为锁被绑定到进程,而不是文件描述符.这意味着如果您锁定一个文件,然后某个其他线程或某些库函数锁定/解锁它,您的锁也将被破坏.此外,您不能使用文件系统锁来保护同一进程的两个线程相互干扰.此外,您不应对多个用户可访问的文件使用文件锁,因为这样可以有效地使用户冻结彼此的进程.
总结:Unix上的文件锁定会产生比它解决的问题更多的问题.在你使用它,你必须真正确保你完全理解的语义.
Emi*_*nov 12
是的,这是可能的.
Unix的方法是通过fcntl或lockf.无论你选择什么,一定要只使用它而不要混合两者.看看这个问题(有答案):fcntl,lockf,哪个更好用于文件锁定?.
如果可以,请查看UNIX环境中高级编程的第14.3节.