社区
Linux/Unix社区
帖子详情
消息队列中消息大小
Zsen_J
2010-03-11 02:15:47
2个进程一个主进程,一个子进程;
主进程发送消息,子进程读取消息;
问题是:
主进程发送消息大小不定情况下,子进程如何获得消息大小?
...全文
316
6
打赏
收藏
消息队列中消息大小
2个进程一个主进程,一个子进程; 主进程发送消息,子进程读取消息; 问题是: 主进程发送消息大小不定情况下,子进程如何获得消息大小?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yzq025
2010-06-10
打赏
举报
回复
收时可以以默认最大值来收,msgrcv返回实际该消息的大小,只要不超过最大值就没问题,不影响队列里其他消息!
Zsen_J
2010-03-16
打赏
举报
回复
之前没在这个板块,移动到这里希望得到答案
pengxn
2010-03-13
打赏
举报
回复
[Quote=引用 2 楼 zsen_j 的回复:]
int msgrcv(int msqid,struct msgbug *msgp,size_t msgsz,long int msgtyp,int msgflg);
这个是函数定义,注意中间的参数 size_t msgsz.此参数是消息缓冲区大小,这个值的大小如何来定?
[/Quote]
楼主的意思是,想在接收以前就知道消息的大小是多少,便于开辟缓冲区来接受。
比如发送端送了4096字节,而只按1024接收的话,后续数据是会被截断,且被破坏无法获取的。
所以如果能够知道发送的时候,最大的长度是多少就好做了,接收端确实无法知道缓冲需要开辟,这个问题我也很困绕,项目开发中是采取其他方式实现的。
帮顶,关注
Zsen_J
2010-03-12
打赏
举报
回复
没人给个答案么
Zsen_J
2010-03-11
打赏
举报
回复
int msgrcv(int msqid,struct msgbug *msgp,
size_t msgsz
,long int msgtyp,int msgflg);
这个是函数定义,注意中间的参数 size_t msgsz.此参数是消息缓冲区大小,这个值的大小如何来定?
nextel
2010-03-11
打赏
举报
回复
msgrcv的返回值就是此次操作中所获得数据的长度。如果你的数据传输后拿不到长度,就需要自己在传输的结构中加长度信息。
linux
消息
队列
大小
设置,linux
消息
队列
参数
消息
队列
一、函数mq_open头文件mqueue.h;原型mqd_t mq_open(const char *name, int oflag, .../*mode_t mode,struct mq_attr* attr*/);函数功能创建
消息
队列
;参数name:
消息
队列
的名字,根据
消息
队列
的规则,为了...
msgsnd发送队列满时清空
消息
队列
,msgsnd
消息
队列
的
大小
如何设置
在上面的程序
中
,我们首先使用ftok函数生成一个用于创建
消息
队列
的key,然后使用msgget...需要注意的是,在实际应用
中
,应该对
消息
队列
的
大小
进行合理的设置,避免
消息
队列
过小导致溢出,或者过大导致系统资源浪费。
Linux下修改
消息
队列
大小
修稿
消息
队列
的
大小
RT-Thread
消息
队列
消息
队列
名称,内存缓冲区,
消息
大小
以及队列长度等,同时每个
消息
队列
对象
中
包含着 多个
消息
框,每个
消息
框可以存放一条
消息
,
消息
队列
中
的第一个和最后一个
消息
框被分别称为
消息
链表头和
消息
链表尾,对应于
消息
...
RTOS
中
的
消息
队列
的原理以及应用
消息
队列
是一个先进先出的数据结构,任务可以向队列
中
发送
消息
,也可以从队列
中
接收
消息
。
消息
队列
的原理如下: 创建
消息
队列
:在RTOS
中
,可以使用API函数创建一个
消息
队列
。创建时需要指定
消息
队列
的
大小
和
消息
...
Linux/Unix社区
23,116
社区成员
74,506
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章