rename()
函数,既可以重命名文件,又可以将文件移至同一文件系统中的另一目录。 rename()
函数会将 oldpath
所表示的现有的一个路径名重命名为 newpath
参数所指定的路径名。
#include <stdio.h> int rename(const char *oldpath, const char *newpath);点击复制复制失败已复制
rename()
函数调用仅操作目录条目,而不移动文件数据。改名既不影响指向该文件的其他硬链接,也不影响持有该文件的打开描述符的任何进程,因为这些文件描述符指向的是打开文件描述,与文件名无关。
如果 newpath
已经存在,则将其覆盖。如果 newpath
与 oldpath
指向同一文件,则不发生变化(且调用成功)。
如果 oldpath
指定文件而非目录,那么就不能将 newpath
指定为一个目录的路径名(否则将 errno
置为 EISDIR
)。要想重命名一个文件到同一目录中(亦将文件移动到另一个目录), newpath
必须包含新的文件名。如下调用既将一个文件移动到另一个目录中,同时又将其改名:
rename("sub1/x", "sub2/y");点击复制复制失败已复制
如果 oldpath
指定目录名,则意在重命名该目录。这种情况下,必须保证 newpath
要么不存在,要么是一个空目录的名称,否则将会出错。
如果 oldpath
是一个目录,则 newpath
不能包含 oldpath
作为其目录前缀。例如,不能将 /home/iric/test
重命名为 /home/iric/test/demo
。