Установка разрешения для общей памяти, созданной при помощи boost - PullRequest
11 голосов
/ 06 января 2012

Мы открываем расширенную разделяемую память, которая была создана другим процессом, подобным этому

  boost::interprocess::managed_shared_memory segment(boost::interprocess::open_only, "SharedMem");

Но если процесс, который создал общую память, был пользователем root, то процесс, читающий ее, если он был обычным пользователем, завершится с ошибкой по следующей причине:

terminate called after throwing an instance of 'boost::interprocess::interprocess_exception'
what():  Permission denied

Что я должен сделать, чтобы избежать этого? то есть дать разрешение на общую память всем?

1 Ответ

6 голосов
/ 06 января 2012

Если вы посмотрите на shared_memory конструктор , он принимает права доступа объект. boost::interprocess::permissions::set_unrestricted это, вероятно, то, что вы ищете

void set_unrestricted();
//Sets permissions to unrestricted access:
//        A null DACL for windows or 0666 for UNIX.

Согласно это , оно было добавлено в версии 1.45

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...