boost文件系统的跨设备链接错误无效
Invalid cross-device link error with boost filesystem
我正试图使用boost::filesystem
将文件从一个位置移动到另一个位置。我使用boost::filesystem::rename
函数,但当我尝试这样做时,我有以下错误。
terminate called after throwing an instance of
'boost::filesystem::filesystem_error'
what(): boost::filesystem::rename: Invalid cross-device link:
"./file_A.csv", "/opt/data/file_B.csv"
Aborted (core dumped)
我知道问题是我试图将一个文件从一个文件夹移动到另一个挂载在不同卷上的文件夹。
是否有与
不同的解?- 复制文件,然后删除它(这给了我一些安全感)。
- 在呼叫
std::systen
时包裹mv
?
在boost::filesystem
中是否有其他功能可以实现我想要的功能?我自己找不到。
我正在使用g++和linux。
如果由于源文件和目标文件位于不同的文件系统上而重命名文件失败(最终通过rename()
库调用,无论它是包装在boost::
中还是其他任何东西中),那么唯一的选择是复制文件并在验证复制完成并成功后删除原始文件。这就是/bin/mv
所做的-它首先尝试rename()
,如果它的失败返回的错误代码表明跨设备链接的情况,它回落到复制和删除场景。
相关文章:
- 静态数据成员的问题-修复链接错误会导致编译器错误
- Visual Studio mkl_link_tool.exe链接错误
- C++ 实现模板单例类时出现链接错误
- 使用类模板的方法链接错误
- MySQL C++连接器链接错误
- VS 2015 链接错误 无法构建依赖于 libcurl 的项目
- 运行 C++ 单元测试时LNK2005链接错误
- 对 CMake 中'cudaRegisterLinkedBinary'链接错误的未定义引用?
- 链接错误,包括我创建的相同头文件 - C++
- 在Embarcadero C++ Builder中生成的DLL未解决的外部链接错误
- 使用标头保护的多个定义链接错误
- 链接错误:未定义对 stdscr 和 wgetch 的引用
- 使用 Vivek 的 Vcam / 捕获源过滤器构建/链接错误
- 升压program_options中的链接错误
- 使用 g++ 预处理器进行替换会导致链接错误
- 在调试配置中编译工作正常,但发布会给出链接错误
- 相邻矩阵设置链接错误
- 包含常量变量并包含在多个文件中的标头的链接错误
- C++链接错误,我理解但无法解决
- 是什么导致macOS Mojave上的GoogleTest链接错误