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

标签 c macos shared-memory

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

关于c -/dev/shm 在 Mac OS X 上的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31278519/

相关文章:

c - 共享内存和 fork 的意外行为?

C中的循环链表

c - setcontext() 中的 Stackoverflow

mysql - 错误 2002 (HY000) : Can't connect to local MySQL server through socket '/tmp/mysql.sock'

linux - unix、BSD、Mac OS X、linux 和 GNU 之间有什么关系?

c - C进程在fork()之后打印两次,即使它在父进程内部并且我刷新了stdout

c++ - 为什么结构体的 sizeof 不等于每个成员的 sizeof 之和?

c - gcc -Wpadded 不提供任何警告

swift - 缩放 NSTextView 并在 Swift 2 中保留自动换行

cuda - GPU 上可用的共享内存量