在 Unix 中,记录锁定是一种用于将文件的一部分锁定一定时间的技术,以保持并发访问文件时数据的一致性。在这种机制上,强制锁定是一种用于独占锁定文件部分的技术。如果一旦对文件启用强制锁定,则任何其他进程都无法读取或写入文件的锁定部分的数据。因此,要启用对文件的强制锁定,请执行以下过程。
Turn ON the set group id bit and turn OFF the group execute bit for the file to be lock.
那么,这个保存这些组 id 的进程需要什么,以及为什么我特别想对组 id 执行此操作以启用强制锁定。我看到了很多参考资料,但它们都只说明了规则,而不说明为什么要实施该规则。
答案1
Linux 内核文档Linux 操作系统的强制文件锁定有一些历史:
System V 强制锁定方案旨在对现有用户代码产生尽可能小的影响。该方案基于将单个文件标记为强制锁定的候选者,并使用现有的 fcntl()/lockf() 接口来应用锁,就像它们是普通的建议锁一样。
通过在文件模式中设置组 ID 位但删除组执行位,将文件标记为强制锁定的候选者。这是一个毫无意义的组合,由 System V 实现者选择,以免破坏现有的用户程序。
(更具体地说,UNIX 环境中的高级编程书上说这是在 System V Release 3 中完成的。)