2015-03-08 70 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");