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

qua*_*rtz 8 c linux

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

  1. rename(oldfile, newfile)

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

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

Geo*_*roy 10

简短回答:

第一个解决方案.


使用该rename调用,您只执行一次系统调用,并且可以通过系统和/或实现进一步优化.您还清楚地说明了您打算做什么,这比仅仅在程序的单个点上搜索最终性能更重要.

link/ unlink解决方案的工作还可以,但它真的不清楚你打算做什么.另外,如何管理link多个文件系统?并且在某些文件系统或操作系统上甚至无法实现链接.

  • +1表示"明确说明你打算做什么". (2认同)