C++ boost文件系统的跨设备链接错误无效

C++ boost文件系统的跨设备链接错误无效,c++,linux,boost-filesystem,C++,Linux,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_

我正在尝试使用
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()
    library调用,无论它是否包含在
    boost::
    或任何其他文件中)失败,因为源和目标位于不同的文件系统上,唯一的选择是在验证复制是否完整和成功后复制文件并删除原始文件。这就是
    /bin/mv
    所做的-它首先尝试
    重命名()
    ,如果失败返回的错误代码指示跨设备链接情况,它将返回到复制和删除场景。

    选项1是
    /bin/mv
    重命名()
    初始尝试失败时所做的操作。非常感谢。如果你把你的回答写在一个答案中,我会把它标记为正确的答案。Python
    os.rename()
    也会出现这种情况。