我有多個執行緒試圖記錄到同一個檔案。
每個執行緒都有一個FILE *,指向該檔案。 這些 FILE * 是以 append ('a') 模式打開的,并且使用了行緩沖。
在同一行程中向同一檔案打開多個 FILE * 是根據 ANSI C.定義的實施。
有沒有人知道MacOS、FreeBSD和Linux的具體實施行為,特別是每個FILE *是否會有自己的行緩沖區,以及是否有任何丟失或交錯寫入的可能性。
uj5u.com熱心網友回復:
MacOS、FreeBSD和Linux都是POSIX系統。因此,每個FILE*將有它自己的用戶空間緩沖區(如果你禁用它,則沒有),一旦該緩沖區被重繪 ,它將被寫入底層檔案描述符。POSIX保證append打開的檔案描述符的寫入是原子性的,因此沒有資料會丟失。只要你的資料沒有被分割到多次重繪 中,它也不會相互交錯。
。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/328094.html
標籤:
