看來,在Linux下C調用fread
和fwrite
被鎖定爲在手冊頁(man fwrite
)一些解鎖功能有提及(unlocked_stdio
)。關於FREAD/FWRITE鎖定並從不同的過程稱爲
至於票價是大家都知道,是這些鎖跨進程有效的還是他們僅鎖定在同一個進程?
看來,在Linux下C調用fread
和fwrite
被鎖定爲在手冊頁(man fwrite
)一些解鎖功能有提及(unlocked_stdio
)。關於FREAD/FWRITE鎖定並從不同的過程稱爲
至於票價是大家都知道,是這些鎖跨進程有效的還是他們僅鎖定在同一個進程?
他們甚至不鎖定進程內。它們只鎖定您稱之爲的實際流對象。例如,如果您有兩個引用相同底層文件或終端的FILE*
對象,則fread
和fwrite
會高興地允許它們相互之間進行踐踏,即使在相同的過程中也是如此。
......哦,親愛的......所以這裏唯一的保證就是FILE *流它將保持完整(希望在同一個進程中),但不是可以由其他操作系統交織的實際寫入文件。所以這是開發確保2是同步正確.. –
@AbruzzoForteeGentile在整個過程中,你可以使用'flock'風格的鎖。在一個過程中,好吧,你正在編寫所有的代碼,所以你應該能夠找到一些方法來做到這一點。 –
afaik,您引用的句子是指多線程 –
「* Locking *」?哪個鎖定?敢於引用我們的信息來源? – alk
補充來源。不幸的是,我也剛剛發現這篇文章。指的是Solaris,但它提到了C#http://stackoverflow.com/questions/3685115/does-fwrite-call-any-lock-internally –