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 权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章