所以我在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,但现在应该修复。
任何帮助都将不胜感激。
答案 0 :(得分:0)
我在Centos 5.5上。对我来说,需要为运行队列的用户设置umask为022。 在.bashrc中设置之后,一切都按预期工作。