【问题标题】:Strange output in mq_receive with queues in linuxlinux中带有队列的mq_receive中的奇怪输出
【发布时间】:2015-08-23 13:05:43
【问题描述】:

我正在基于 linux 的系统上处理包含 2 个不同文件的队列。

我通过mq_send() 发送一个结构并在另一个文件中用mq_receive() 接收。

当我使用完美运行的 char * 时,但现在,我放置了我的结构,我将其转换为 (char *) 并且发送发生了,但我没有收到我必须接收的内容,以及接收到的字节数接收总是bytes received: 18446744073709551615

我的结构是这样的:

struct men
{
    int a;
    int b;
    };

我还将结构的 sizeof 放在 mq_send()mq_receive() 中,并将队列的属性放在 .mq_msgsize 中。

我努力找出问题所在,更改尺寸等,但我找不到错误。

谢谢!

【问题讨论】:

标签: c linux struct queue send


【解决方案1】:

18446744073709551615 是 -1 映射到无符号 64 位整数。这表明 mq_receive() 失败。您需要查看 errno 以确定它是如何失败的。

您不需要更改 .mq_msgsize。我会坚持使用 mq_open(),因为这是一个非常小的结构。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-08
    • 1970-01-01
    • 1970-01-01
    • 2014-08-10
    • 2013-01-19
    相关资源
    最近更新 更多