在学习信号量,特别是 System V 信号量时,我继续阅读有关 System V IPC key 的内容,但无法理解对此类标识符的需求。
再拿回信号量,如果key标识符的用途是:
"To make it easier for different processes to get the identifier from an object they need to share (Advanced UNIX Programming, 2nd ed, pg 429)"
为什么我们不能只使用信号量 id 作为可以被不同进程使用的标识符?
附言This答案谈到了密切的主题,但没有具体提到所谓的使用对象 ID 作为标识符(而不是 key )的可能性。
最佳答案
也许你应该尝试回答以下问题:
您将如何组织一组进程以使用完全相同的信号量进行同步?
进程(以及运行或配置这些进程的人员)没有 通过 id 识别信号量的简单方法。 该值是运行内核的内部值,下一次启动时可能不存在从一次内核启动中获知的值。因此,给定一个键作为(外部)标识符,您可以轻松地将内部内核对象与外部已知名称相关联。
将外部 key 与内部对象相关联是 SysV IPC XXget() 方法所做的(使用适当的参数,即 IPC_CREATE 标志)
关于c - System V IPC 中对 key 的需求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35992378/