Mac OS X上/ dev / shm的位置

时间:2015-07-07 20:20:35

标签: c macos

我正在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);                                                          
    }

该计划的一个小片段就是上述内容。

当我第二次编译并运行程序时,我会收到错误:

In shm_open(): File exists

我假设因为我需要使用rm [path_to]/my_shared_memory手动删除。我知道在Linux上,默认位置是dev/shm,但是,Mac OS X上不存在此路径。

my_shared_memory的位置在哪里,我可以将其删除?

1 个答案:

答案 0 :(得分:2)

您问题的最简单解决方案是不使用

O_EXCL

如果您不想要这种行为。

通常,共享内存对象确实有一个名称,但它实际上不是文件名 - 通常不能删除它们。在/ dev / shm下显示它们是一个很好的POSIX风格,但这取决于你的操作系统:

我最好的猜测是你应该阅读机器上man shm_open所说的内容。