消息队列 (mqueue.h),无效参数错误,C 语言

问题描述 投票:0回答:1

我无法在 C 中创建和打开消息队列。

我尝试了

mq_open()
函数的各种参数,但没有任何结果。

我检查了一些类似的问题,但一直无法得到解决方案。

我不确定我做错了什么。

我收到

mq_open: Invalid argument
错误。

// Create the message queue
mqd_t mq;

// Open the message queue
mq = mq_open(argv[1], O_RDONLY | O_CREAT, 0666, NULL);
if (mq == (mqd_t)-1) {
       perror("mq_open");
       exit(EXIT_FAILURE);
}

我随意给它起了个名字“a”。

c message-queue mqueue
1个回答
1
投票

我随意给它起了个名字“a”。

这是消息队列的无效名称。此类名称必须以前导“/”开头。这在 mq_overview 手册页中有详细说明,mq_open 的手册页中引用了该内容:

消息队列使用mq_open(3)创建并打开;这 函数返回一个消息队列描述符(mqd_t),即 用于在以后的调用中引用打开的消息队列。每个 消息队列由 /somename 形式的名称标识; 即,最大为 NAME_MAX(即 255)的以 null 结尾的字符串 由一个初始斜杠,后跟一个或一个组成的字符 更多字符,其中没有一个是斜杠。两个进程可以 通过将相同的名称传递给 mq_open(3) 来对同一队列进行操作。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.