我正在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);
}
该计划的一个小片段就是上述内容.
当我第二次编译并运行程序时,我会收到错误:
在shm_open()中:文件存在
我假设因为我需要使用rm [path_to] / my_shared_memory手动删除.我知道在Linux上,默认位置是dev / shm,但是,Mac OS X上不存在此路径.
my_shared_memory的位置在哪里,所以我可以删除它?
最佳答案 您问题的最简单的解决方案是不使用
O_EXCL
如果你不想要那种行为.
通常,共享内存对象确实有一个名称,但它实际上不是文件名 – 通常不能删除它们.在/ dev / shm下显示它们是一个很好的POSIX风格,但这取决于你的操作系统:
我最好的猜测是你应该读一下man shm_open在你机器上说的内容.