共享内存段的键为0 [重复]
Posted
技术标签:
【中文标题】共享内存段的键为0 [重复]【英文标题】:Keys of shared memory segments are 0 [duplicate] 【发布时间】:2015-12-15 11:31:06 【问题描述】:这是 shmget -m 在我的 linux 机器上的输出。这里所有的键都是 0。
为什么呢?创造它们的过程将如何区分它们?通常我们使用 ftok() 创建一个密钥,并使用它们使用 shmget() 创建一个共享内存。这样我们就可以区分程序中的内存段。似乎操作系统在没有不同键的情况下四处走动。引擎盖下可能会发生什么?我也可以在不生成唯一键的情况下执行类似的操作吗?
【问题讨论】:
key一直为0还需要什么? 阅读更多关于shmget(2) 【参考方案1】:特殊键0
在shmget(2)
系统调用中也称为IPC_PRIVATE
。这意味着该段没有“公共”密钥,任何希望使用它的人都必须以其他方式获得对它的引用。例如,调用fork(2)
来生成工作进程的服务器进程可以使用“私有”共享内存与这些工作进程进行通信。它不需要密钥,因为它只在分叉之前显式打开一次。
【讨论】:
以上是关于共享内存段的键为0 [重复]的主要内容,如果未能解决你的问题,请参考以下文章