gpt4 book ai didi

linux - 在不相关进程之间使用消息队列

转载 作者:太空狗 更新时间:2023-10-29 12:08:15 25 4
gpt4 key购买 nike

我正在尝试使用消息队列在 Linux 中的两个不相关进程之间进行通信。我知道使用公共(public)键值将允许我们在两个不相关的进程中打开相同的消息队列。但问题是有时对应于消息队列的键值可能已被某些系统实用程序使用。所以我正在使用 IPC_CREAT | IPC_EXEL 标志以确保强制创建新的消息队列。

万一 msgget() 返回错误,我增加键值并重试创建一个新的消息队列,直到成功。现在,问题是我如何将这个成功的键值传递给想要在同一消息队列上操作的其他无关进程。

我错过了什么吗?有没有人遇到过类似的问题?

最佳答案

使用 ftok(3)。它需要一个路径名和一个任意整数 id(仅使用低 8 位,因此通常使用一个字符)并生成一个可能唯一的 key_t。它不能保证是唯一的,但是使用 id 你可以使用相同的路径名,并且在发生冲突时为 id 指定增量。

典型的执行是:

Primary 使用 ftok(3) 获取 key 。

Primary 使用标志来指定它想要一个新的消息队列。出错时,递增 id 并调用 ftok 直到它获得合适的消息队列。消息队列是使用特定于辅助进程运行的用户/组的权限创建的(尽可能窄,最好是进程唯一的)

Secondary使用ftok获取starting key,然后使用msgget,递增id并重新使用预先确定的ftok,直到成功获取消息队列key。

关于linux - 在不相关进程之间使用消息队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1685503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com