c - System V IPC 中对 key 的需求

标签 c ipc

在学习信号量,特别是 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/

相关文章:

c - else 语句的段错误

C - 返回数组不起作用

c++ - MinGW + Eclipse : Type invalid conversion from 'void

python - 如果其中一个是使用 Popen 启动的,为什么两个 Python 脚本之间的套接字连接会中断?

sockets - Linux : Unix domain datagram sockets don't follow specification of connect/recv,吗?

linux - libnl-3 包括损坏的?

c - 如何编写C程序

C:二维数组与普通数组相同大小的区别

javascript - Electron ipc使用远程网站?

python - 如何在运行的 python 代码和 nodejs 之间进行通信