我正在 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);
}
Run Code Online (Sandbox Code Playgroud)
程序中的一个小片段是上面的。
当我第二次编译并运行程序时,我会得到错误:
In shm_open(): File exists
我假设是因为我需要使用rm [path_to]/my_shared_memory. 我知道在 Linux 上,默认位置是dev/shm,但是,此路径在 Mac OS X 上不存在。
位置在哪里,my_shared_memory我可以删除它吗?
解决您的问题的最简单的方法是不使用
O_EXCL
Run Code Online (Sandbox Code Playgroud)
如果你不想要这种行为。
一般来说,共享内存对象确实有一个名称,但它并不是真正的文件名——通常不能删除它们。在 /dev/shm 下显示它们是很好的 POSIX 风格,但这取决于您的操作系统:
我最好的猜测是您应该阅读man shm_open机器上的说明。
| 归档时间: |
|
| 查看次数: |
2599 次 |
| 最近记录: |