2011-01-13 58 views
2

Technical Q&A 1497this question(其答案從技術說明覆制)指出,從FSDeleteObject越來越fBsyErr時,正確的解決方法是調用FSUnlinkObject上10.5+。是文件刪除有時無法在Mac

什麼兩種API FSDeleteObject之間的差異技術FSUnlinkObject (比指出,FSUnlinkObject不會出現在文檔中其他)? unlink爲什麼要成爲回退而不是主API?

+0

「API函數」**。 API是一組函數,而不是一個函數;)我是一個術語納粹。/ontopic - 有趣的問題。我的想法是,刪除它將永久刪除它,而unlink只是將它從列表中刪除(可以這麼說),但該文件仍然存在。不過,我可能是錯的。 – Qix 2011-01-13 21:00:42

回答

0

我猜FSDeleteObject是第一個,因爲它繼續存在早在Mac OS與Unix合併之前存在的一系列文件刪除功能,而解除鏈接文件是Unix的概念。

0

你鏈接的Apple文件比較清楚地說明了區別。 FSUnlinkObject具有與unlink()相同的語義 - 允許刪除打開的文件。當您嘗試這樣做時,FSDeleteObject不允許刪除打開的文件並返回該錯誤代碼。

+0

是的,但是這並不能解釋任何事情 - 爲什麼要刪除是主要的並且在繁忙時斷開回退?爲什麼不一直使用unlink? – Richard 2011-01-14 01:57:28

+1

@Richard:誰說刪除是主要的?上面鏈接的問答說:「此API調用是在10.5和更高版本上刪除文件時避免錯誤的首選解決方案。」但是這表明了一個不會始終使用unlink的理由:可能會試圖編寫與OS 10.4兼容的代碼。當問答寫出來時,這可能是一個比現在更大的問題。 – JWWalker 2011-03-21 05:28:59