我已经作出了Linux的CUI应用程序,经由消息quene进程之间进行通信。

,只要它是一个实例没有与它没有问题。然而,当有相同的应用程序的多个实例,在quene消息被发送到错误的实例。

我明白,这可以通过给予msgget功能的唯一密钥来避免。 使用ftok()来创建一个密钥,但由于这些变量是相同的,他们导致 相同的密钥。

有人能指导我如何为每个实例的唯一键?

我现在有唯一的想法是randamize给予ftok变量,和 我知道,不能是正确的。

有帮助吗?

解决方案

小心ftok!

此将只对唯一给定文件系统且仅当然后如果 该文件系统没有大量使用。 fttok是通过在文件系统中的文件条目数被驱动。

这曾经是获得独特价值,但时间的好方法 和摩尔定律几年前赶上了它。它的工作原理上 文件编号,但实际的文件号的低8位现在是32位 和编号为每个文件系统重新开始。

的进程ID是一个相当不错的选择,他们得到重新循环但不作为 只要过程仍然活着。

其他提示

您可以尝试使用进程ID。我的谷歌富了

寻找全局唯一ID通常称为GUID或UUID。必须有你可以用它来生成它们的库。他们是从你的网卡地址,当前时间和随机数由唯一的字符串。

如何时钟? 维基百科说的,它比RDTSC(和SMP安全)更好。

“在Linux下,类似的功能是通过使用POSIX clock_gettime功能读取CLOCK_MONOTONIC时钟的值提供。”

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top