2012-07-17 46 views
4

比方說,我有X個進程打開文件Y進行追加。每個進程在當時只寫一行(帶有\ n)(真正的日誌條目)。從多個進程追加到單個文件的「線程安全性」?

是否保證每行不會在文件Y中錯誤交錯?

更新:本地附加文件系統。

+0

(我知道它不是真的*內部進程線程,但是..) – 2012-07-17 01:41:16

+1

看看這個[this](http://stackoverflow.com/questions/5200923/are-unix-reads-and-writes-to -a單文件原子序列化)。我不確定它是否完全回答你的問題,但它解釋了寫入操作如何發生得很好。 – 2012-07-17 01:41:26

回答

0

問題取決於正在進行的寫入類型。如果您正在使用具有緩衝功能的標準I/O,這通常是大多數程序的默認設置,那麼緩衝區只會在寫入幾行後刷新,並且在刷新時不一定是整數行。如果您正在使用write(2)或已將默認stdio緩衝更改爲line或unbuffered,那麼只要行數合理(當然,如果行數小於512字節),它將可能正確交錯。