c - 消息队列 - 多个进程在 msgqueue 上发送 cmd

标签 c linux posix message-queue

我有一个场景,其中多个进程(p1、p2 等)同时向消息队列 (cmd_msg_q) 发送命令(post)。

并且有一个接收进程 (R1) 从队列中检索消息并将适当的回复发送回另一个消息队列 ( response_msg_q ) 上的进程。

如何从接收进程回复以便将消息发送到特定进程?

(使用 Posix 消息队列。)这里进程 A、B 或 C 是​​动态创建的。最大限制为 20 个可以发送命令的进程。

最佳答案

在那种情况下,您必须在消息中集成一些发件人的 ID。另请注意,这些队列本质上是单向的,因此要发回消息,您需要创建一个队列,初始接收者将在该队列上发送消息,初始发送者将监听回复。

这比我最初想象的更难解释,所以让我们尝试使用示例。假设我们有程序 A B 和 C,其中 A 和 B 发送给 C。他们通过相同的队列这样做。 C 将知道谁发送了消息,因为发件人的标识嵌入在消息中,并将回复发布到 B 读取的队列或 C 读取的队列。

关于c - 消息队列 - 多个进程在 msgqueue 上发送 cmd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22910954/

相关文章:

c - 错误 : ‘AES_BLOCK_SIZE’ undeclared. 无法在 Linux 中使用 C 编译 OpenSSL

python - concurrent.futures 和 POSIX Linux 中异步 I/O 的区别

c - pthread_cond_timedwait 忽略取消请求

c - C 中的扫描不正确

具有特殊可变参数的 C 宏

linux - 终端和shell脚本中运行命令有什么区别?

linux - 如何在后台运行使用shell的linux应用程序?

c - 尝试使用 POSIX 消息队列创建消息队列时权限被拒绝

c - 使用远程 GDB 在 Eclipse 中调试

c - 为什么这个简单的 C 代码集成代码会失败?