c - Linux 中队列的 mq_receive 中的奇怪输出

标签 c linux struct queue send

我正在基于 Linux 的系统上使用具有 2 个不同文件的队列。

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

当我使用完美工作的 char * 时,但现在,我放置我的结构,我用 (char *) 转换它并且发送发生,但我没有收到我必须收到的内容,并且接收中收到的字节数始终是 收到的字节数:18446744073709551615

我的结构是这样的:

struct men
{
    int a;
    int b;
    };

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

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

谢谢!

最佳答案

18446744073709551615 被 -1 映射到无符号 64 位整数。这表明 mq_receive() 失败。您需要查看 errno 来确定失败的原因。

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

关于c - Linux 中队列的 mq_receive 中的奇怪输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30719752/

相关文章:

C 和 OpenCV 内存泄漏

java - 无法在java中实例化结构内部的结构

c# - 要构造的字节数组

c - 在 C 中使用硬件定时器

无法将字符串复制到结构中的字符串 (C)

c - 使用C实现基数排序

c - 在C函数中返回struct

c - strncpy 中的段错误 - 从字典加载

linux - 如何使用 bash 脚本更改 iptable 条目?

java - 将在 linux 中从 windows 创建的 jar 文件作为可执行文件运行