mq_open:参数无效

yel*_*hil 4 c linux posix message-queue

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

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

mqdes = mq_open(argv[1], O_RDONLY);
Run Code Online (Sandbox Code Playgroud)

我试过把它换成

mqdes = mq_open("/bla", O_RDONLY | O_CREAT);
Run Code Online (Sandbox Code Playgroud)

但它仍然无效.

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

顺便说一句,这是RHEL 5.8.

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

nos*_*nos 10

只是mq_open(argv[1], O_RDONLY);应失败"ENOENT(没有这样的文件或目录)"如果消息队列不存在.

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

    mq_open(argv[1], O_RDONLY | O_CREAT, 0666, NULL);
Run Code Online (Sandbox Code Playgroud)