如何创建一个 POSIX 共享消息队列而不将其创建为仅限根访问权限?

How can I create a POSIX shared message queue without it created as root access only?

我正在使用 POSIX mqueue 创建消息队列 API:

    mq_open("/myqueue", O_CREAT | O_WRONLY, O_WRONLY, NULL)

我还安装了消息队列对象的目录:

su
mkdir /dev/mqueue
mount -t mqueue none /dev/mqueue
exit

当我 运行 我的程序时,消息队列出现在 /dev/mqueue 中,权限为:

---------x

我无法与这个消息队列交互,它没有用 ipcs 命令显示。

如何创建 POSIX 消息队列供 Ubuntu 18.04 中的用户级应用程序使用?

你对函数的参数是错误的。您将 O_WRONLY 作为 模式 传递,但它是一个标志,就像另一个 O_* 一样。相反,你应该这样做:

mq_open("/myqueue", O_CREAT | O_WRONLY, 0600, NULL);

或您想要的其他文件访问模式 (0600 = rw-------)。