IPC msgrcv - 仅接收两种特定类型的消息

时间:2013-02-20 10:36:13

标签: c linux ipc msgrcv

我遇到了问题。

我有一个进程,假设它是一个客户端,一个名为server的进程。客户端和服务器通过相同的队列相互通信。假设客户端向服务器发送消息(请求),因此服务器处理它并应将消息发送回客户端确认或失败。假设确认有long type = 1500101,失败有long type = 1500102

是否可以(在C中使用msgrcv)只等待这两种类型的消息(客户端)? 如果没有,做这种机制的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

不,您无法接收多种消息类型。除了单一类型之外,它可以是全部,也可以是单一类型。

所做的是用msgrcv标志两次调用IPC_NOWAIT,每种类型一次。

答案 1 :(得分:0)

  

客户端和服务器通过相同的队列相互通信。

我建议客户端和服务器有单独的队列。然后,服务器可以接收在其队列中发送给它的所有消息(使用msgtype为0)。它可以根据收到的消息的msgtype进行切换,并执行必要的操作。