2009-10-10 207 views
3

如何在不使用標準重命名函數的情況下以編程方式重命名unix平臺上的文件?如何重命名文件?

+1

如果你知道如何,只是回答問題,而不是問爲什麼.. – Krypton 2013-06-13 06:07:20

+0

檢查此鏈接:http://theunixshell.blogspot.com/search/label/rename – user1939168 2014-03-18 07:24:21

回答

38

重命名文件的歷史方法是使用鏈接(2)創建一個新的硬鏈接到同一個文件,然後使用unlink(2)刪除舊名稱。

+1

這將無法在目錄上工作。有一個原子重命名的好理由(2)。 – tchrist 2011-08-23 20:15:44

4

下面是一個有些諷刺的解決方案,這本身並不使用標準rename(2)系統調用:

#include <stdlib.h> 

if (system("mv file1 file2") != 0) 
    perror("system"); 

它的rename(2)間接使用,這個系統調用是由mv(1)調用。

+3

不要忘記,當源位置和目標位置位於不同的文件系統上時,'mv'的作用遠遠超過'rename()'。 – 2009-10-10 23:07:43