升壓文件鎖定一般的策略(可共享和範圍的file_locks)和文件一般我覺得鎖定使用,是這樣的:
是tellp安全與文件鎖定
- 開放
- 鎖
- 對文件內容進行操作
- 解鎖
- 關閉文件
但是,我將打開追加文件並想要調用tellp來查看我的位置。在上述情況下安全嗎?文件在鎖之前打開並且因此可能不受保護,是否不會立即設置文件指針?如果是這樣,有沒有一個標準的習慣來解決這個問題?
升壓文件鎖定一般的策略(可共享和範圍的file_locks)和文件一般我覺得鎖定使用,是這樣的:
是tellp安全與文件鎖定
但是,我將打開追加文件並想要調用tellp來查看我的位置。在上述情況下安全嗎?文件在鎖之前打開並且因此可能不受保護,是否不會立即設置文件指針?如果是這樣,有沒有一個標準的習慣來解決這個問題?
這可能是環境特定的,但對大多數的平臺:
當一個文件被打開附加文件指針每次寫入之前立即調整。因此,如果在鎖定文件之前使用tellp
,它可能不會告訴您新添加的字節將在哪裏執行,但您不應該有兩個使用鎖定進程仍會附加相同的字節範圍的進程。
中,你可以閱讀:
呵呵,這是非常糟糕的...我想幫忙,我寫了示例代碼,嘗試它並...從1_44開始,文件鎖定對於win32來說是破壞的,對於鎖定的文件,刷新不起作用。
對不起,不是我的錯。
如果有幫助,理論上:如果您打開要附加的文件,這意味着自動尋找在每次寫入操作之前結束。它不會阻止你在任何時候想要結束手動尋找 - 即使沒有寫作。但是,經驗(見上文)說:遠離破碎的東西。
如果屬實,這對我來說仍然有些問題。我擔心的一個問題是,我希望每個人都打開要附加的文件,但是如果在文件的開頭打開附加文件並將文件打開,則會寫出一個標頭。 – frankc 2011-01-13 14:33:21
@frankc:然後你需要鎖定文件,然後調用`tellp`來查看你是否需要寫頭。鎖定之前的`tellp`不會有意義。 – 2011-01-13 17:52:36