2015-03-08 74 views
0

我一直在研究本指南,其中概述了如何处理Linux中的消息队列,到目前为止我没有遇到任何问题。修改在Linux中使用的C消息队列程序

http://beej.us/guide/bgipc/output/html/multipage/mq.html

不过,我想知道我会做修改示例程序,以便将消息传递到不同的收件人,这取决于所发送的消息。 例如:如果消息以文本'URGENT'开头,发送给收件人A,否则发送给收件人B.

我知道我需要第二个收件人类,但不知道如何实现此功能。

回答

0

我知道我将需要第二个收件人类,但不知道如何 实现此功能。

通过第二个收件人类你必须意味着第二个消息队列。由于在样本程序的消息队列标识符keykey = ftok("kirk.c", 'B')创建的,第二密钥是显而易见的选择是keyurg = ftok("kirk.c", 'A'),与在发送方,以及在接收器中,你msgget()所述第二队列(比方说msqidurg)。当涉及到发送消息:

 if (msgsnd(strncmp(buf.mtext, "URGENT", 6) ? msqid : msqidurg, &buf, len+1, 0) < 0) 
      perror("msgsnd");