OSX: shm_open returns ENAMETOOLONG



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

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

所以完整的Path应该是:/tmp/pl_dev/shm_pl_dev_system_25077

我在那里创建了几个文件,一些fifo管道和其他东西,还有shm。我得到的唯一问题是shm_open将始终返回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在SHMs的文件名上非常有限…当前文件名的最大长度是每节31个字符(参见/usr/include/sys/posix_shm.h中的PSHMNAMELENGTH)

相关内容

  • 没有找到相关文章

最新更新