C 程式設計/stdio.h/rename
外觀
rename 是 C 程式語言中用於重新命名特定檔案的函式。 [1]
該函式的原型為
int rename(const char *oldname, const char *newname)
成功返回零。失敗返回其他整數,並且在這種情況下 errno 會設定為錯誤程式碼。
rename 函式在 C 語言中的 stdio.h 庫標頭檔案中指定,在 C++ 中的 cstdio 標頭檔案中指定。它在 ANSI C 中指定。
在 POSIX 中,如果舊名稱和新名稱位於不同的已掛載檔案系統中,rename 將失敗(帶有 EXDEV)。 [2] 如果對 rename 的呼叫成功,則保證它對當前主機來說是原子的(即,另一個程式只會看到具有舊名稱的檔案或具有新名稱的檔案,而不是兩者或都不)。
Windows C 庫版本的 rename 如果目標檔案已存在則會失敗(POSIX 只有在使用者沒有許可權刪除目標檔案時才會失敗)。雖然底層的 WIN32 呼叫(從 Win2K 開始)有一個選項來複制 POSIX 原子行為,但庫從未被修復為使用它。
- ↑ ISO/IEC 9899:1999 規範 (PDF). p. 268, § 7.19.4.2.
- ↑ : 重新命名檔案 – 系統介面參考,單一 UNIX® 規範,第 7 版,來自開放組