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

时间:2011-09-29 10:12:40

标签: c++ boost ipc

所以我在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 个答案:

答案 0 :(得分:0)

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