Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.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++ 使用C++;在Linux中_C++_Linux_Move - Fatal编程技术网

C++ 使用C++;在Linux中

C++ 使用C++;在Linux中,c++,linux,move,C++,Linux,Move,我正在尝试编写一些在所有平台上跨卷移动文件的东西。目前,我使用rename(…)函数来移动文件,这甚至可以跨Windows上的卷/驱动器进行移动。但是,在Linux上,我(通过strace)收到一个EXDEV错误,导致我的应用程序死机:( 看起来我可能需要通过系统(…)调用“mv”,但这似乎非常不方便。或者将boost集成到我的应用程序中,这不是一个简单的操作 我还有其他选择吗 感谢您的时间。如果您想编写跨平台且不依赖于系统特定实现的内容,您必须遵守该标准。虽然较新的C++11标准可能允许使用其

我正在尝试编写一些在所有平台上跨卷移动文件的东西。目前,我使用rename(…)函数来移动文件,这甚至可以跨Windows上的卷/驱动器进行移动。但是,在Linux上,我(通过strace)收到一个EXDEV错误,导致我的应用程序死机:(

看起来我可能需要通过系统(…)调用“mv”,但这似乎非常不方便。或者将boost集成到我的应用程序中,这不是一个简单的操作

我还有其他选择吗


感谢您的时间。

如果您想编写跨平台且不依赖于系统特定实现的内容,您必须遵守该标准。虽然较新的C++11标准可能允许使用其他功能来帮助您,但一个简单的解决方案是从一个
fstrea实现纯拷贝m
到另一个。

请参阅@KerrekSB-“在所有平台上”…如果您想做与POSIX mv完全相同的事情,可以查看BSD实现的源代码。IIRC尝试重命名,然后在EXDEV上使用与cp命令共享的代码(这是数百行代码,用于获得正确的东西,如适当地传输文件元数据等),然后在成功后调用unlink。如果您想完全正确地获得所有这些,您最好使用BSD代码,而不是自己编写。如果您不在意,hmjd的链接会给您一个简单得多的答案(事实上,他们中的一些人)。