我无法在 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”。
我随意给它起了个名字“a”。
这是消息队列的无效名称。此类名称必须以前导“/”开头。这在 mq_overview 手册页中有详细说明,mq_open 的手册页中引用了该内容:
消息队列使用mq_open(3)创建并打开;这 函数返回一个消息队列描述符(mqd_t),即 用于在以后的调用中引用打开的消息队列。每个 消息队列由 /somename 形式的名称标识; 即,最大为 NAME_MAX(即 255)的以 null 结尾的字符串 由一个初始斜杠,后跟一个或一个组成的字符 更多字符,其中没有一个是斜杠。两个进程可以 通过将相同的名称传递给 mq_open(3) 来对同一队列进行操作。