C++网络 IO、文件处理和网络故障

C++ Network IO, File handling and network failures

本文关键字:网络 故障 处理 IO C++ 文件      更新时间:2023-10-16

我想在网络中的另一台机器上创建一个新文件并写入它。 我使用 CreateFileWriteFile MSDN 函数来创建和写入文件。

这里的问题是在网络故障期间写入网络磁盘不一致

在长时间失败和启用本地缓存期间,句柄将变为无效,并返回错误代码 ERROR_BAD_NETPATH (53(。因此,关闭现有句柄并重新打开新句柄会导致缓存中的数据丢失。

此处无法使用通过使用 FILE_FLAG_NO_BUFFERINGFILE_FLAG_WRITE_THROUGH 标志禁用本地缓存,因为它会减慢写入速度

执行网络文件写入的最佳方法是什么? 还是此网络故障是一次性的,这必须是一个限制?

按照马塞利诺的建议进行操作,即首先在本地写入文件。然后使用 system(( 运行适用于您的平台的复制实用程序(例如:xcopy 或 scp(作为外部进程。这种可靠地复制你的功能不应该尝试复制。只需使用它。:)