разрешение boost :: interprocess :: message_queue отклонено - PullRequest
0 голосов
/ 29 сентября 2011

Итак, у меня есть следующий код с бустом 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, оно пройдет.Я не могу понять, где он пытается написать, где у него будет ошибка разрешения.Если посмотреть на код повышения, не должен ли он быть в / tmp / boost_interprocess, к которому любой пользователь мог бы иметь доступ для создания и записи?Кроме того, я заметил https://svn.boost.org/trac/boost/ticket/4250,, но это должно быть исправлено.

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 03 сентября 2012

Я на Centos 5.5.Для меня это была необходимость установить umask для пользователя, запустившего очередь, в 022. После того, как я установил это в .bashrc, все работает как задумано.

...