2012-01-06 10 views
11

Abrimos una memoria compartida impulso que fue creado por otro proceso como estepermiso de ajuste de la memoria compartida creado por impulso

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

Pero si el proceso que creó la memoria compartida era un usuario root, entonces la lectura proceso que, si se trataba de un usuario normal, se producirá un error con la razón como:

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

¿Qué debo hacer para evitar esto? eso es para dar permiso a la memoria compartida para todos?

Respuesta

6

Si mira shared_memoryconstructor, toma un objeto permissions. boost::interprocess::permissions::set_unrestricted es probablemente lo que busca

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

Según this, que se añadió en la versión 1.45

+0

¿cuál es el modo de mode_t? –

+0

y en qué versión se implementó? –

+0

Ver mi actualización ... agregada 1.45 o posterior –

Cuestiones relacionadas