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

yig*_*cuk 1 c message-queue mqueue

我无法在 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);
}

Run Code Online (Sandbox Code Playgroud)

我随意给它命名为“a”。

dbu*_*ush 5

\n

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

\n
\n

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

\n
\n

使用 mq_open(3) 创建和打开消息队列;该函数返回一个消息队列描述符 (mqd_t),用于在以后的调用中引用打开的消息队列。每个消息队列都是由 /somename 形式的名称标识的;也就是说,最多为 NAME_MAX(即 255)个字符的空终止字符串,其中包含一个初始斜杠,后跟一个或\n多个字符,其中没有一个是斜杠。两个进程可以通过将相同的名称传递给 mq_open(3) 来操作同一队列。

\n
\n