跳到內容

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 原子行為,但庫從未被修復為使用它。

參考文獻

[編輯 | 編輯原始碼]
  1. ISO/IEC 9899:1999 規範 (PDF). p. 268, § 7.19.4.2.
  2. rename: 重新命名檔案 – 系統介面參考,單一 UNIX® 規範,第 7 版,來自開放組
[編輯 | 編輯原始碼]
華夏公益教科書