Estoy trabajando en una asignación de memoria compartida en Mac OS X
#define SHARED_OBJECT_PATH "/my_shared_memory" fd = shm_open(SHARED_OBJECT_PATH, O_CREAT | O_EXCL | O_RDWR, S_IRWXU | S_IRWXG); if (fd < 0) { perror("In shm_open()"); exit(1); }Uno de los pequeños fragmentos del programa es el anterior.
Cuando compilo y ejecuto el programa por segunda vez, aparece el error:
In shm_open(): File exists
Supongo que necesito eliminar manualmente usando rm [path_to]/my_shared_memory . Sé que en Linux, la ubicación predeterminada es dev/shm , sin embargo, esta ruta no existe en Mac OS X.
¿Dónde está la ubicación de my_shared_memory para poder eliminarla?
La solución más simple a su problema es no usar
O_EXCLsi no quieres ese comportamiento.
En general, los objetos de memoria compartida tienen un nombre, pero en realidad no es un nombre de archivo; por lo general, no puede eliminarlos. Es un buen estilo POSIX mostrarlos en /dev/shm, pero esto depende de su sistema operativo:
Mi mejor suposición sería que deberías leer lo que dice man shm_open en tu máquina.