posix重命名行为

时间:2012-03-15 20:46:11

标签: unix operating-system posix posix-api

如果我们尝试将文件夹重命名为包含某个文件的现有文件夹

,会发生什么

EX:

在文件夹D1中有另一个文件夹D2和f1文件,如果我们尝试重命名d2 - > D3

该行为是如何删除现有的d3并尝试重命名或任何奇怪的行为

2 个答案:

答案 0 :(得分:2)

正如“parsifal”所回答的,可以找到rename()的文档,例如:在http://pubs.opengroup.org/onlinepubs/007904875/functions/rename.html

我在这里添加了自己的答案,因为parsifal的答案留下了一个至关重要的细节,即:

If new names an existing directory, it shall be required to be an empty 
directory.

在errno号码列表中,我们有

[EEXIST] or [ENOTEMPTY]
    The link named by new is a directory that is not an empty directory

因此,如果new指向非空目录,rename()将返回-1,则errno将设置为EEXIST或ENOTEMPTY,并且未进行任何更改。

答案 1 :(得分:1)

POSIX文档可在线获取,Google搜索您的问题会将您带到此处:http://pubs.opengroup.org/onlinepubs/007904875/functions/rename.html

  

如果新参数指定的目录存在,则应将其删除并将旧名称重命名为new。