我遇到了问题。
我有一个进程,假设它是一个客户端,一个名为server的进程。客户端和服务器通过相同的队列相互通信。假设客户端向服务器发送消息(请求),因此服务器处理它并应将消息发送回客户端确认或失败。假设确认有long type = 1500101
,失败有long type = 1500102
。
是否可以(在C中使用msgrcv)只等待这两种类型的消息(客户端)? 如果没有,做这种机制的最佳方法是什么?
答案 0 :(得分:1)
不,您无法接收多种消息类型。除了单一类型之外,它可以是全部,也可以是单一类型。
所做的是用msgrcv
标志两次调用IPC_NOWAIT
,每种类型一次。
答案 1 :(得分:0)
客户端和服务器通过相同的队列相互通信。
我建议客户端和服务器有单独的队列。然后,服务器可以接收在其队列中发送给它的所有消息(使用msgtype为0)。它可以根据收到的消息的msgtype进行切换,并执行必要的操作。