/dev/shm 在 Mac OS X 上的位置

the*_*age 5 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);                                                          
    }
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我可以删除它吗?

Mar*_*ler 3

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

O_EXCL
Run Code Online (Sandbox Code Playgroud)

如果你不想要这种行为。

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

我最好的猜测是您应该阅读man shm_open机器上的说明。