【发布时间】:2016-04-28 06:03:32
【问题描述】:
为shmget 或semget 函数选择键的惯用方式是什么?
如何确定其他进程没有使用相同的密钥?
是的。我知道一个大的随机数很可能不会被其他人使用,但是没有防弹的方法来选择它吗?
【问题讨论】:
标签: c unix shared-memory semaphore
为shmget 或semget 函数选择键的惯用方式是什么?
如何确定其他进程没有使用相同的密钥?
是的。我知道一个大的随机数很可能不会被其他人使用,但是没有防弹的方法来选择它吗?
【问题讨论】:
标签: c unix shared-memory semaphore
也许您知道有一个函数ftok 可以让您从文件路径中获取密钥。所以拥有“个人”密钥的问题是找到一个“个人”文件。保证不同的文件有不同的密钥。一个习惯用法可以是创建一个临时文件(借助tmpnam?),或者创建一个隐藏在某个私有目录中的文件并将其与ftok 一起使用。
【讨论】:
首先在分配共享内存或信号量时使用标志IPC_CREAT 和IPC_EXCL。如果已存在具有给定键的共享内存段,shmget 命令将失败。反复尝试使用新的随机密钥获取共享内存段,直到成功为止。
现在您必须找出将您使用的密钥传达给其他进程的方法。正如你建议使用随机数,我假设你有这样的方式。
【讨论】: