首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >POSIX消息队列连接问题: mq_open没有这样的文件或目录

POSIX消息队列连接问题: mq_open没有这样的文件或目录
EN

Stack Overflow用户
提问于 2020-02-16 14:16:12
回答 1查看 337关注 0票数 1
代码语言:javascript
复制
#define MESSAGE_QUEUE_NAME "/project"    

int main (int argc, char **argv){
    char user_name[USER_NAME_LEN];
    mqd_t qd_server;
    int flags;

   if (argc != 2) {
       printf ("Usage: %s user-name\n", argv[0]);
       exit (EXIT_FAILURE);
   }
   strcpy (user_name, argv[1]);
   printf ("User %s connecting to server\n", user_name);

   if ((qd_server = mq_open (SERVER_QUEUE_NAME, O_WRONLY)) == -1) {
       perror ("Client: mq_open (server)");
       exit (1);
   }
   …

在向队列发送消息之前,我尝试打开消息队列。在发送消息之前,我需要打开队列服务器,但当我运行它时,错误是:

代码语言:javascript
复制
Client: mq_open (server): No such file or directory

我就是不知道发生了什么。

EN

回答 1

Stack Overflow用户

发布于 2020-02-16 14:59:26

根据the man page的说法,您会得到ENOENT错误号,因为“O_CREAT标志没有在oflag中指定,并且不存在具有此名称的队列”。

因此,您可能还没有创建消息队列。如果它不存在,可以通过将对mq_open的调用更改为mq_open(SERVER_QUEUE_NAME, O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR, NULL)来创建它。您可以指定自己的具有最大队列长度和消息大小的mq_attr结构,而不是将NULL作为attr参数传递。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60245914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档