如果我们尝试将文件夹重命名为包含某些文件的现有文件夹会发生什么
前任:
在文件夹 D1 中有另一个文件夹 D2 和 f1 文件,还有 D3 和 f2 文件,如果我们尝试重命名 d2-->D3
行为将如何删除现有的 d3 并尝试重命名或任何奇怪的行为
如果我们尝试将文件夹重命名为包含某些文件的现有文件夹会发生什么
前任:
在文件夹 D1 中有另一个文件夹 D2 和 f1 文件,还有 D3 和 f2 文件,如果我们尝试重命名 d2-->D3
行为将如何删除现有的 d3 并尝试重命名或任何奇怪的行为
正如“parsifal”所回答的那样,rename() 的文档可以在例如http://pubs.opengroup.org/onlinepubs/007904875/functions/rename.html找到
我在这里添加自己的答案,因为 parsifal 的答案遗漏了一个关键细节,即:
如果新命名现有目录,则必须为空 目录。
在 errno 数字列表中,我们有
[EEXIST] 或 [ENOTEMPTY] new命名的链接是一个非空目录的目录
因此,如果 new 指向的目录不为空,rename() 将返回 -1,errno 将设置为 EEXIST 或 ENOTEMPTY,并且没有进行任何更改。
POSIX 文档可在线获取,Google 搜索您的问题会将您带到此处: http: //pubs.opengroup.org/onlinepubs/007904875/functions/rename.html
如果新参数命名的目录存在,则应将其删除并将旧的重命名为新的。