Boost::iostreams::mapped_file文件路径问题
boost::iostreams::mapped_file file path issue
我在使用boost的mapped_file iostreams库时遇到了一个问题。
boost documentation: mapped_file
在阅读了我能阅读的所有文档和示例之后,我仍然不能让下面的代码工作。我假设当您将new_file_size和路径传递给mapped_file_params类时,它将在我调用mapped_file的构造函数时所需的位置打开(并创建)文件,其中参数中包含mapped_file_params对象。但它唯一做的就是在项目工作目录中创建一个名字奇怪的文件,比如"%F8/134",而不是我告诉它的地方。也许我错了,应该创建文件之前指定它到mapped_file?在阅读了文档之后,我假设当您填写new_file_size参数时,它创建了一个新文件。并指定文件名。
有人经历过吗?对如何解决这个问题有什么建议吗?
代码如下:
boost::iostreams::mapped_file_params param(filename); // filename is a std::string with the correct path
param.flags = boost::iostreams::mapped_file::mapmode::readwrite;
param.new_file_size = sizeNeeded; // sizeNeeded is the size of the data
param.length = sizeNeeded;
boost::iostreams::mapped_file fileMap(param); // at this point the file is created
…
谢谢你的时间,
亚历山大首先,我不确定对mapmode::readwrite的支持有多好,boost::iostream库的维护有多好。出于我的好奇心,我在Ubuntu 12.04上用g++-4.7.2编译的boost 1.52尝试了稍微"修改"的代码。我没有看到"奇怪的名字"的问题。该文件创建了正确的名称,但mf。open(param)未完成对mmap在文件中引发的异常:mapped_file.cpp
void* data =
::BOOST_IOSTREAMS_FD_MMAP(
const_cast<char*>(p.hint),
size_,
readonly ? PROT_READ : (PROT_READ | PROT_WRITE),
priv ? MAP_PRIVATE : MAP_SHARED,
handle_,
p.offset );
if (data == MAP_FAILED)
cleanup_and_throw("failed mapping file");
如果你可以升级到最新的版本,我会这样做。此外,您可以在调试模式下构建boost库,并跟踪代码以查看出错的地方。在这里,您可以找到一些在调试模式下构建boost库的提示
相关文章:
- 从函数角度看ID到文件路径的内部与外部映射
- 在C++中设置基于操作系统的文件路径
- Windows 非 ASCII 文件路径
- 非 ASCII 文件路径窗口
- C++和带有国家符号的文件路径(也许用 UTF8 编码)
- 如何为文件路径使用变量?
- 包括 VS Code 上的完整文件路径
- 如何使用提升获取当前文件路径?
- 如何在 c++ 中获取当前文件路径?
- 保存json文件后如何返回文件路径
- 从 C++ 中的文件路径中提取文件名
- 是否可以将文件路径传递给Qt中的setStyleSheet()
- 无法转换 .CATPart 文件.错误:输入文件路径似乎包含不支持的字符
- 在结构函数之间传递文件路径 C++ 编辑:修复LNK2019错误
- 提供依赖于输入的程序的文件路径
- 从 QFileSystemModel 中的文件路径和文件名获取 QModelIndex
- 如何更改变量文件名的文件路径?
- cmake:包括vs vs add_subDirectory:相对标头文件路径
- 在OSX中使用CGDisplayStream存储屏幕记录的特定文件路径
- 如何在另一个系统上启用文件路径