Mac OS X上/ dev / shm的位置

我正在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在你机器上说的内容.

点赞