Linux 我可以在收到mq_后发送答复吗?

Linux 我可以在收到mq_后发送答复吗?,linux,message-queue,Linux,Message Queue,我有一个或多个守护程序应用程序正在运行,为了与之通信,我有一个客户端应用程序。客户端应用程序是在命令行上执行的简单程序。在某一时刻,只有一个机会会出现。当我执行诸如daemon update config之类的命令时,客户端会打开mq_并发送该命令。一些命令,如list我想要结果。如果我在收到消息后在守护进程中运行mq_send,我可能会在守护进程应用程序中收到消息 向客户端发送回复的最佳方式是什么,而不是在守护进程中意外地处理它?在快速查找之后,似乎没有明显的解决方案,所以我选择了sleep(

我有一个或多个守护程序应用程序正在运行,为了与之通信,我有一个客户端应用程序。客户端应用程序是在命令行上执行的简单程序。在某一时刻,只有一个机会会出现。当我执行诸如
daemon update config
之类的命令时,客户端会打开mq_并发送该命令。一些命令,如
list
我想要结果。如果我在收到消息后在守护进程中运行
mq_send
,我可能会在守护进程应用程序中收到消息


向客户端发送回复的最佳方式是什么,而不是在守护进程中意外地处理它?在快速查找之后,似乎没有明显的解决方案,所以我选择了
sleep(1)
,这似乎完全解决了我的问题,尽管这是一个“黑客”。最好的解决方案是什么?睡眠是最容易理解和最直接的解决方案吗?我不想生成随机/唯一值,传入并打开另一个mq发送它。一秒钟的睡眠感觉是最好的解决方案,但我想知道您的解决方案可能是什么。

使用消息传递系统时,您可以执行RPC调用,即使它不是一般使用消息传递的最佳范例。使用消息传递的RPC的一般方法是:

  • 为请求和回复创建不同的队列(后者可以是为每个请求创建的临时队列,也可以是持久队列)
  • 为每封邮件指定一个唯一的ID,该ID将在回复中使用,以标识其回复的邮件。(例如,在AMQP中,它被称为correlation_id)
我想您也可以对Posix队列使用相同的方法