2012-03-15 35 views
0

如果我们试图重命名文件夹包含包含一些文件POSIX命名行为

EX现有的文件夹会发生什么:一个文件夹D1在

还有另一个文件夹D2与F1文件,也D3具有f文件,如果我们试图重命名D2 - > D3

怎么会行为是要删除现有d3和尝试重命名或任何奇怪的行为

回答

2

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

我在这里将我自己的答案,因为帕西法尔答案遗漏了一个重要细节,即:

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

在错误号号码的列表,我们有

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

因此,如果新指向一个非空目录,rename()将返回-1,errno将被设置为EEXIST或ENOTEMPTY,并且没有更改。