c - 如何创建 POSIX 共享消息队列而不将其仅创建为 root 访问权限?

标签 c posix ipc ubuntu-18.04

我正在使用 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 命令显示。

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

最佳答案

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

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

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

关于c - 如何创建 POSIX 共享消息队列而不将其仅创建为 root 访问权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58480444/

相关文章:

linux - 多处理器机器中posix线程的并发

mysql - 需要一个简单、持久的单系统排队解决方案

c - 第一次机会异常 : KernelBase. dll

C、检测有向图中的循环、DFS、不一致图

c - 我不知道为什么 else if 语句没有发生

node.js - 为什么两个进程之间的管道数据太大时看起来会被截断?

c++ - MFC与WPF进程间通信

C 将行读取为字符串

c - Posix 信号量。为什么我的线程不会像预期的那样在 sem_wait() 处等待?

linux - 进程完成后的 CPU 时间