繁体   English   中英

mq_open:参数无效

[英]mq_open: Invalid argument

我正在尝试为mq_notify的手册页中的POSIX消息队列运行示例程序。 我将它作为./mq '/bla' ,它给了我错误mq_open: Invalid argument

这是示例程序中提供错误的行:

mqdes = mq_open(argv[1], O_RDONLY);

我试过把它换成

mqdes = mq_open("/bla", O_RDONLY | O_CREAT);

但它仍然无效。

这一定很简单,但我无法弄清楚。 我究竟做错了什么?

顺便说一句,这是RHEL 5.8。

编辑:我错误的第一个错误。 没有O_CREAT,它说“没有这样的文件或目录”。 我想它试图打开一个不存在的消息队列。 使用O_CREAT,我认为无效的参数错误是因为我只有两个参数,你需要四个O_CREAT。

只需mq_open(argv[1], O_RDONLY); 如果消息队列不存在,则应以“ENOENT(无此类文件或目录)”失败。

如果将其更改为使用O_CREAT,则需要将另外两个参数传递给mq_open ()。 (阅读关于O_CREAT的段落).eg

    mq_open(argv[1], O_RDONLY | O_CREAT, 0666, NULL);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM