Linux下进程间通信,请教高手!急啊~!

有三个进程,一个进程A发消息(调用函数msgsnd),两个进程B、C读消息(调用函数msgrcv)。消息队列只有一个。期望目标:B、C两个进程都能读到A发出的消息,且B、... 有三个进程,一个进程A发消息(调用函数msgsnd),两个进程B、C读消息(调用函数msgrcv)。消息队列只有一个。
期望目标:B、C两个进程都能读到A发出的消息,且B、C读到的消息应该是一样的。
实际情况:B、C中只有一个可以读到A发出的消息。即:A发出的消息,B读到的时候,C就读不了;C读到的时候,B就读不了。
请问:我应该如何做,才能让B、C都能完整的读到A发出的消息呢?
展开
 我来答
zhxnlove
2010-10-25 · TA获得超过156个赞
知道小有建树答主
回答量:165
采纳率:0%
帮助的人:83.4万
展开全部
你的期望目标应该是有问题的,就像 kwydwuf说的一样,消息读都了就没了,如果真要牵强的实现的话就像 qiu1123说的一样,同样的消息分类型发两次就可以了,那样b,c就可以按照自己的类型读到一样的信息了。

ps:类型就是用来多线程通信的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
快又稳
2024-10-28 广告
在Linux环境下配置基于域名的虚拟主机,需安装Apache或Nginx等Web服务器,并编辑配置文件。以Apache为例,需创建虚拟主机配置文件,指定域名、文档根目录等,然后启用该配置文件并重启Apache服务。同样,Nginx也需在相应... 点击进入详情页
本回答由快又稳提供
kwydwuf
2010-10-25 · TA获得超过7411个赞
知道大有可为答主
回答量:1527
采纳率:71%
帮助的人:2020万
展开全部
这是不可能的,msgrcv后,收到的消息就从消息队列中自动移除了。

正确的做法是,创建两个消息队列,q1,q2, B读q1,C读q2,A发消息时,同样的消息分别发到q1,q2中。

这是唯一的方法。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qiu1123
2010-10-25 · 超过16用户采纳过TA的回答
知道答主
回答量:108
采纳率:0%
帮助的人:44.7万
展开全部
typedef struct
{
long msg_type;
char msg_text[BUFSZ];
}Msg_buf;

msg_type;
用来区分B/C

同样在取队列的时候也要指定响应的msg_type
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式