2011-09-29 66 views
0

所以我有升壓1.47以下代碼:的boost ::進程間:: message_queue權限被拒絕

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(消息)= 256。

輸出是: 權限被拒絕

如果我運行root用戶,它會通過。我無法弄清楚它試圖寫入哪裏會出現許可錯誤。查看boost代碼,不應該只是在/ tmp/boost_interprocess中,任何用戶都有權創建和寫入該代碼?此外,我注意到https://svn.boost.org/trac/boost/ticket/4250,但現在應該修復。

任何幫助,將不勝感激。

回答

0

我在Centos 5.5上。對我來說,需要爲運行隊列的用戶設置umask爲022. 在.bashrc中設置後,所有工作都按預期運行。