跳到内容

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 原子行为,但库从未被修复为使用它。

参考文献

[编辑 | 编辑源代码]
  1. ISO/IEC 9899:1999 规范 (PDF). p. 268, § 7.19.4.2.
  2. rename: 重命名文件 – 系统接口参考,单一 UNIX® 规范,第 7 版,来自开放组
[编辑 | 编辑源代码]
华夏公益教科书