Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Boost消息队列文件是否可以重定向到用户指定的位置_C++_Boost_Boost Interprocess - Fatal编程技术网

C++ Boost消息队列文件是否可以重定向到用户指定的位置

C++ Boost消息队列文件是否可以重定向到用户指定的位置,c++,boost,boost-interprocess,C++,Boost,Boost Interprocess,如何将Boost消息队列文件的创建重定向到用户指定的目录。 我正在使用ubuntu。 目前它是在/dev/shm位置创建的。 文件与消息队列名称相同。 我尝试定义宏BOOST\u进程间\u共享\u DIR\u FUNC和实现的函数 获取共享目录。但它不起作用。 下面是我的代码: 文件:message\u queue\u dir\u path.h #include <string> namespace boost { namespace interpro

如何将Boost消息队列文件的创建重定向到用户指定的目录。 我正在使用ubuntu。 目前它是在/dev/shm位置创建的。 文件与消息队列名称相同。 我尝试定义宏BOOST\u进程间\u共享\u DIR\u FUNC和实现的函数 获取共享目录。但它不起作用。 下面是我的代码: 文件:message\u queue\u dir\u path.h

    #include <string>
    namespace boost {
        namespace interprocess {
            namespace ipcdetail {
                void get_shared_dir(std::&shared_dir){
                    shared_dir = "/home/username/message_queue_dir";
                }
           }
       }
    }
#包括
名称空间提升{
名称空间进程间{
名称空间详细信息{
无效获取共享目录(标准:&共享目录){
shared_dir=“/home/username/message_queue_dir”;
}
}
}
}
并在编译中的BOOST_进程间_共享_DIR_FUNC中定义宏。
但它仍然没有在给定位置创建文件。转到/dev/shm

我在CentOS 7上调试了类似的情况,结果如下: 在Linux上,无法使用get_shared_dir更改共享_dir。它将位于/dev/shm中(或安装tmpfs的任何位置)

原因是Linux boost消息队列内部使用了“shm_open”。shm_open只允许“对象名”,而不允许文件路径

在Windows上,您的解决方案是一种魅力

如果您想查看代码,可以在boost\interprocess\shared\u memory\u object.hpp、function shared\u memory\u object::priv\u open\u或\u create中找到它

相关问题: