We open a boost shared memory that was created by another process like this
boost::interprocess::managed_shared_memory segment(boost::interprocess::open_only, "SharedMem");
But if the process that created the shared memory was a root user, then the process reading it, if it was a normal user, will fail with the reason as:
terminate called after throwing an instance of 'boost::interprocess::interprocess_exception'
what(): Permission denied
What should i do to avoid this? that is to give permission to the shared memory to all?
If you look at the shared_memory constructor, it takes a permissions object. boost::interprocess::permissions::set_unrestricted
is probably what you are looking for
void set_unrestricted();
//Sets permissions to unrestricted access:
// A null DACL for windows or 0666 for UNIX.
According to this, it was added in 1.45 version
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With