我正在基于 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/