windows - 在 Windows 上是否可以进行原子文件重命名(覆盖)?

标签 windows winapi posix

在 POSIX 系统上,rename(2) 提供原子重命名操作,包括覆盖目标文件(如果存在且权限允许)。

有没有办法在 Windows 上获得相同的语义?我知道 Vista 和 Server 2008 上的 MoveFileTransacted(),但我需要它来支持 Win2k 及更高版本。

这里的关键词是原子...解决方案不能以任何方式失败而导致操作处于不一致状态。

我看到很多人说这在 win32 上是不可能的,但我问你,真的吗?

如果可能,请提供可靠的引文。

最佳答案

参见 Win32 中的 ReplaceFile() (http://research.microsoft.com/pubs/64525/tr-2006-45.pdf)

关于windows - 在 Windows 上是否可以进行原子文件重命名(覆盖)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/167414/

相关文章:

C# 属性 : Font and Color Change on the Fly

c++ - Gzip 内存压缩

c - 如果将已分配的内存块分割成更小的 block ,我还需要担心内存对齐吗?

posix - "posix isolation"是什么?

php - 编译失败 : POSIX collating elements are not supported

python - Windows 上的 multiprocessing.Pool.apply_async

windows - 安装 Leiningen 2.6.0(zip 文件)

delphi - 我的应用程序什么时候开始运行?

c - 过于频繁地调用 Shell_NotifyIcon 后托盘图标停止出现

c++ - std::condition_variable::wait()是POSIX线程取消点吗?