OSX: shm_open returns ENAMETOOLONG

OSX: shm_open returns ENAMETOOLONG

我正在尝试 atm 为我的进程创建一个共享内存文件。文件名由几个部分组成,用于标识 SHM 所属的进程及其内容。一个例子是: shm_pl_dev_system_25077

我在 /tmp 中创建的目录中创建了所有文件,我拥有完全的读写权限。

所以完整的路径是: /tmp/pl_dev/shm_pl_dev_system_25077

我在那里创建了几个文件,一些 fifo 管道和其他东西,还有 shm。我遇到的唯一问题是 shm_open 将始终 return errno 63 (ENAMETOOLONG).

你能告诉我这里的问题是什么吗?

代码如下:

        handle_ = ::shm_open(shm_name.get(), O_RDWR, 0755);
        if (handle_ == -1 && errno == ENOENT)
        {
            // SHM does not yet exists, so create it!
            handle_ = ::shm_open(shm_name.get(), O_CREAT | O_RDWR, 0755);
            if (handle_ != -1) {
                created_ = true;
            }
            else
            {
                if (!silent_)
                {
                    log.error("Couldn't create the SHM (%d).", errno);
                }
                return false;
            }
        }

好的。似乎 OSX 在 SHM 的文件名中非常有限......当前文件名的最大长度是每节 31 个字符(参见 /usr/include/sys/posix_shm.h 中的 PSHMNAMELENGTH