首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用msgrcv读取动态长度内容

使用msgrcv读取动态长度内容
EN

Stack Overflow用户
提问于 2012-05-22 20:31:40
回答 1查看 452关注 0票数 0

我使用msgrcv函数从消息队列中读取消息。当我读取已知长度的数据时,它工作得很好。某些情况下,我的消息长度是可变的。在这种情况下,我如何才能只分配所需的内存量并从消息队列中读取消息,而不会丢失消息队列中的任何数据。请给出解决这个问题的想法。

注意:在IBM消息队列中,当我们读取超长数据时,它会将消息的实际大小填充到我们传递的mqget函数的结构中。像这样,有没有办法在消息队列中完成这个操作。

EN

回答 1

Stack Overflow用户

发布于 2012-05-22 20:51:05

根据我对msgrcv()手册页的简要阅读,如果您的缓冲区太小并且没有指定MSG_NOERROR标志,msgrcv()将返回-1 (将errno设置为E2BIG)并将消息留在队列中。

在这种情况下,您可以将缓冲区大小加倍(最高可达MSGMAX,在linux上默认为8192 ),然后重试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10702096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档