如GNU C Library documentation fcntl(F_OFD_SETLK)
锁定打开文件表项(通常由open()
获取)。容易明白。打开文件说明Locks confusion(编辑)
但在同一文档中的next example:
在示例过程中,每个线程调用open()
,所以每个文件描述符应指向一个不同的打开文件表项。
如果从每个线程中的fcntl(fd,F_OFD_SETLKW,& lck)获取的锁与新的打开文件表项关联,则每个线程都会获得由open()返回的新的打开文件表项的锁定。在每个线程中。
话,怎么可能在不同的文件表项的锁提供独占写访问?
我缺少什么?
我不明白这个问题。为什么你认为''只是锁定不同的开放文件表条目......意味着这个锁定是完全错误的''? – Scott
该示例显示了每个线程如何锁定文件以获得独占写入访问权限,导致其他线程停止运行,直到锁定释放。现在你的问题是什么? – Philippos
如果每个线程使用fcntl(fd,F_OFD_SETLKW,和LCK)获取的锁与一个新打开的文件表项相关联,则每个线程获得这个新的文件打开表通过开放()返回在每个线程进入一个锁。那么如何才能锁定不同的文件表条目提供独占写访问? –