【问题标题】:Keys of shared memory segments are 0 [duplicate]共享内存段的键为0 [重复]
【发布时间】:2015-12-15 11:31:06
【问题描述】:

这是 shmget -m 在我的 linux 机器上的输出。这里所有的键都是 0。

为什么呢?创造它们的过程将如何区分它们?通常我们使用 ftok() 创建一个密钥,并使用它们使用 shmget() 创建一个共享内存。这样我们就可以区分程序中的内存段。似乎操作系统在没有不同键的情况下四处走动。引擎盖下可能会发生什么?我也可以在不生成唯一键的情况下执行类似的操作吗?

【问题讨论】:

  • key一直为0还需要什么?
  • 阅读更多关于shmget(2)

标签: c linux ipc shared-memory


【解决方案1】:

特殊键0shmget(2) 系统调用中也称为IPC_PRIVATE。这意味着该段没有“公共”密钥,任何希望使用它的人都必须以其他方式获得对它的引用。例如,调用fork(2) 来生成工作进程的服务器进程可以使用“私有”共享内存与这些工作进程进行通信。它不需要密钥,因为它只在分叉之前显式打开一次。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-01
    • 2013-05-20
    • 2014-08-06
    • 2013-06-11
    • 2012-06-02
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多