C++ Boost消息队列文件是否可以重定向到用户指定的位置
如何将Boost消息队列文件的创建重定向到用户指定的目录。 我正在使用ubuntu。 目前它是在/dev/shm位置创建的。 文件与消息队列名称相同。 我尝试定义宏BOOST\u进程间\u共享\u DIR\u FUNC和实现的函数 获取共享目录。但它不起作用。 下面是我的代码: 文件:message\u queue\u dir\u path.hC++ 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
#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中找到它 相关问题: