2012-09-16 42 views

回答

1

TL;博士不要使用readdirreaddir_r,他們是不安全的!使用scandir

readdir不是線程安全的(實際上,它是POSIX中唯一與目錄相關的函數,它已知存在此缺陷)。當然,您可以在簡單的程序中使用它,但要小心!

readdir_r是線程安全的,但使用起來真是痛苦不堪,特別是因爲您必須分配自己的緩衝區,並且它不像您想象的那樣直截了當(因爲不能保證文件的名稱將在所有情況下適用於所有* nixes和所有文件系統中的結構內提供的數組)。 There are workarounds,但是當你使用它們時,「不看,不管發生什麼」

到目前爲止唯一完全安全的,簡單的使用功能,我知道的是scandir:它是線程安全的它本質上是做一切都是爲了你,離開你的目錄條目的乾淨陣列。雖然它可能不適合任何場合,但它肯定可以節省很多你不得不忍受的痛苦。