在C中哪个“重命名”或“链接和取消链接”更昂贵

时间:2013-09-06 08:20:50

标签: c linux

我在目录中有大约100,000个文件。我必须将所有这些文件移动到另一个目录。有两种方法可以做到。

  1. rename(oldfile, newfile)

  2. link(oldfile, newfile)
     unlink(oldfile)

  3. 哪种方法更好?还有其他更好的解决方案吗?

2 个答案:

答案 0 :(得分:10)

简短回答:

第一个解决方案。


使用rename调用只执行一次系统调用,系统和/或实现可以进一步优化。 您还清楚地说明了您打算做什么,这比仅仅在您的计划的单个点上搜索最终表现更重要。

link / unlink解决方案也有效,但目前还不清楚您打算做什么。 另外,如何管理多个文件系统上的link?并且在某些文件系统或操作系统上甚至无法实现链接。

答案 1 :(得分:4)

使用rename()

并非所有文件系统都支持具有多个文件链接,并且您根本无法拥有指向目录的多个链接。另一方面,rename()始终有效。