C 编程/stdio.h/rename
外观
rename 是 C 编程语言中用于重命名特定文件的函数。 [1]
该函数的原型为
int rename(const char *oldname, const char *newname)
成功返回零。失败返回其他整数,并且在这种情况下 errno
会设置为错误代码。
rename 函数在 C 语言中的 stdio.h 库头文件中指定,在 C++ 中的 cstdio
头文件中指定。它在 ANSI C 中指定。
在 POSIX 中,如果旧名称和新名称位于不同的已挂载文件系统中,rename 将失败(带有 EXDEV)。 [2] 如果对 rename 的调用成功,则保证它对当前主机来说是原子的(即,另一个程序只会看到具有旧名称的文件或具有新名称的文件,而不是两者或都不)。
Windows C 库版本的 rename 如果目标文件已存在则会失败(POSIX 只有在用户没有权限删除目标文件时才会失败)。虽然底层的 WIN32 调用(从 Win2K 开始)有一个选项来复制 POSIX 原子行为,但库从未被修复为使用它。
- ↑ ISO/IEC 9899:1999 规范 (PDF). p. 268, § 7.19.4.2.
- ↑ : 重命名文件 – 系统接口参考,单一 UNIX® 规范,第 7 版,来自开放组