代码之家  ›  专栏  ›  技术社区  ›  sheikh_anton

选择共享内存或unix信号量键的惯用方法

  •  2
  • sheikh_anton  · 技术社区  · 9 年前

    选择钥匙的惯用方法是什么 shmget semget 功能?

    我如何才能确定同一个密钥没有被其他进程使用?

    对。我知道一个大的随机数很可能不会被其他人使用,但是有没有一种防弹的方法来选择它?

    2 回复  |  直到 9 年前
        1
  •  2
  •   Jean-Baptiste Yunès    9 年前

    也许你知道有功能 ftok 它允许您从文件路径中获取密钥。因此,拥有“个人”密钥的问题是找到“个人”文件。它保证为不同的文件提供不同的密钥。习惯用法可以是创建临时文件(借助 tmpnam ?), 或者创建一个隐藏在某个私有目录中的文件,并将其与 英尺英尺 .

        2
  •  1
  •   Jonas Schäfer    9 年前

    使用这两个标志 IPC_CREAT IPC_EXCL 当首先分配共享内存或信号量时。这个 shmget 如果已经存在具有给定密钥的共享内存段,则该命令将失败。反复尝试用新的随机密钥获取共享内存段,直到成功。

    现在你必须想办法把你用过的密钥传达给其他流程。正如你建议使用随机数,我认为你有这样的方法。