do {
printf("+++ ");
fflush(stdout);
memset(buffer, 0, MAX_SIZE);
fgets(buffer, MAX_SIZE, stdin);
buffer[strlen(buffer) - 1] = 0;
CHECK(0 <= mq_send(mq, buffer, MAX_SIZE, 0));
} while (strncmp(buffer, CMD_EXIT, strlen(CMD_EXIT)));
这是我为客户端发送到服务器端的内容。我可以与服务器端做类似的事情吗?
答案 0 :(得分:1)
对于通过POSIX消息队列进行通信的两个进程(在同一台机器上运行),每个进程打开队列(其中&#34;&#34;队列由提供给{{1}的双方同意的名称标识})。任何发布到队列的消息都可以通过调用mq_open()
由打开它的任何进程检索。消息按优先级顺序接收,并且在具有相同优先级的消息中最早到最年轻。
将双向通信协议建立在单个消息队列上会很棘手,但您可以使用两个,每个方向一个。尽管如此,这并不是该功能的预期用例。您可能会考虑一对FIFO是否会像一对消息队列一样为您提供服务。