boost::interprocess::message_queue 权限被拒绝

Posted

技术标签:

【中文标题】boost::interprocess::message_queue 权限被拒绝【英文标题】:boost::interprocess::message_queue permission denied 【发布时间】:2011-09-29 10:12:40 【问题描述】:

所以我有以下带有 boost 1.47 的代码:

try

  m_messageQueue = boost::shared_ptr<boost::interprocess::message_queue>(
           new boost::interprocess::message_queue (
             boost::interprocess::open_or_create
             ,name.c_str()             //name
             ,numElements              //max message number
             ,sizeof(Message)          //max message size
             ));

catch(boost::interprocess::interprocess_exception &e)

  cerr << e.what();

其中 name="test_queue"、numElements=100 和 sizeof(Message)=256。

输出是: 权限被拒绝

如果我以 root 用户身份运行,它将通过。我无法弄清楚它试图写入哪里会出现权限错误。查看 boost 代码,它不应该只是在 /tmp/boost_interprocess 中,任何用户都可以访问它来创建和写入吗?另外,我注意到https://svn.boost.org/trac/boost/ticket/4250,但现在应该修复了。

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

我在 Centos 5.5 上。对我来说,需要为运行队列的用户设置 umask 为 022。 在我在 .bashrc 中设置后,所有工作都按预期工作。

【讨论】:

以上是关于boost::interprocess::message_queue 权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章