2011-09-29 4 views
0

그래서 내가 부스트 1.47 다음과 같은 코드를 거부 : 부스트 :: 간은 :: 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(); 
} 

어디 이름 = "test_queue", numElements 개의 = 100, 그리고는 sizeof (메시지) = 256.

출력은 다음과 같습니다 권한이

내가 루트 사용자로 실행하면

를 거부, 그것을 전달합니다. 권한 오류가 발생하는 위치에 쓰기를 시도하는 위치를 파악할 수 없습니다. 부스트 코드를 보면, 모든 사용자가 작성하고 쓸 수있는/tmp/boost_interprocess에 있어야하지 않습니까? 또한 https://svn.boost.org/trac/boost/ticket/4250이 발견되었지만 지금은 수정해야합니다.

도움을 주시면 감사하겠습니다.

답변

0

저는 Centos 5.5입니다. 나에게 큐를 실행중인 사용자가 umask를 022로 설정할 필요가있다. .bashrc에서 이것을 설정 한 후에 모든 것이 의도 한대로 동작한다.