2017-01-09 79 views
0

看來,在Linux下C調用freadfwrite被鎖定爲在手冊頁(man fwrite)一些解鎖功能有提及(unlocked_stdio)。關於FREAD/FWRITE鎖定並從不同的過程稱爲

至於票價是大家都知道,是這些鎖跨進程有效的還是他們僅鎖定在同一個進程?

+0

afaik,您引用的句子是指多線程 –

+0

「* Locking *」?哪個鎖定?敢於引用我們的信息來源? – alk

+0

補充來源。不幸的是,我也剛剛發現這篇文章。指的是Solaris,但它提到了C#http://stackoverflow.com/questions/3685115/does-fwrite-call-any-lock-internally –

回答

3

他們甚至不鎖定進程內。它們只鎖定您稱之爲的實際流對象。例如,如果您有兩個引用相同底層文件或終端的FILE*對象,則freadfwrite會高興地允許它們相互之間進行踐踏,即使在相同的過程中也是如此。

+0

......哦,親愛的......所以這裏唯一的保證就是FILE *流它將保持完整(希望在同一個進程中),但不是可以由其他操作系統交織的實際寫入文件。所以這是開發確保2是同步正確.. –

+1

@AbruzzoForteeGentile在整個過程中,你可以使用'flock'風格的鎖。在一個過程中,好吧,你正在編寫所有的代碼,所以你應該能夠找到一些方法來做到這一點。 –