我使用 fcntl 锁定了文件中的特定字节,其中一些值为 fl.1_start 和 f1.1_len。 当程序运行时,我试图从这些字节上的其他程序写入该文件。 当两个程序同时运行时,尽管第一个程序存在锁定,但第二个程序正在写入这些锁定的字节。 谁能解释为什么它有这样的行为?
fcntl
是Unix类系统中的自愿实现。两个过程都必须使用它才能正常工作。
read()
和write()
等操作只是忽略锁。仅当在已被其他进程锁定的区域上显式调用fcntl()
时,才会阻止另一个进程