当前位置: 首页 > 工具软件 > Open-MQ > 使用案例 >

【Linux】mq_open函数打开失败原因

嵇昱
2023-12-01

最近在看IPC,自己在编写Posix消息队列时,遇到mq_open无法打开,总是返回错误。因为在posix标准中,并不是所有的名字都可以使用,必须是以 / 开始,并且名字里只能包含一个 / 。

代码如下,如果使用NAME ,输出success。如果使用NAME1,输出erro

#include <stdlib.h>
#include <sys/stat.h>
#include <iostream>
#include <mqueue.h>
#include <fcntl.h>
using namespace std;
 
#define NAME "/myque.1234"
#define NAME1 "myque.1234"
 
#define MODE S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP
 
void test()
{
	int flags=O_RDWR|O_CREAT; 
	mqd_t mqd;
	if((mqd=mq_open(NAME,flags,MODE,NULL))==(mqd_t)-1)
		 cout<<"erro"<<endl;
	else 
		cout<<"success"<<endl;
	mq_close(mqd);
}
 
int main()
{
	test();
	return 0;
}

 

 类似资料: