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发出的消息呢? 展开
期望目标:B、C两个进程都能读到A发出的消息,且B、C读到的消息应该是一样的。
实际情况:B、C中只有一个可以读到A发出的消息。即:A发出的消息,B读到的时候,C就读不了;C读到的时候,B就读不了。
请问:我应该如何做,才能让B、C都能完整的读到A发出的消息呢? 展开
展开全部
你的期望目标应该是有问题的,就像 kwydwuf说的一样,消息读都了就没了,如果真要牵强的实现的话就像 qiu1123说的一样,同样的消息分类型发两次就可以了,那样b,c就可以按照自己的类型读到一样的信息了。
ps:类型就是用来多线程通信的。
ps:类型就是用来多线程通信的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
快又稳
2024-10-28 广告
2024-10-28 广告
在Linux环境下配置基于域名的虚拟主机,需安装Apache或Nginx等Web服务器,并编辑配置文件。以Apache为例,需创建虚拟主机配置文件,指定域名、文档根目录等,然后启用该配置文件并重启Apache服务。同样,Nginx也需在相应...
点击进入详情页
本回答由快又稳提供
展开全部
这是不可能的,msgrcv后,收到的消息就从消息队列中自动移除了。
正确的做法是,创建两个消息队列,q1,q2, B读q1,C读q2,A发消息时,同样的消息分别发到q1,q2中。
这是唯一的方法。
正确的做法是,创建两个消息队列,q1,q2, B读q1,C读q2,A发消息时,同样的消息分别发到q1,q2中。
这是唯一的方法。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
typedef struct
{
long msg_type;
char msg_text[BUFSZ];
}Msg_buf;
msg_type;
用来区分B/C
同样在取队列的时候也要指定响应的msg_type
{
long msg_type;
char msg_text[BUFSZ];
}Msg_buf;
msg_type;
用来区分B/C
同样在取队列的时候也要指定响应的msg_type
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询