2013-06-03 26 views
0

我有我已經開了一個參考使用fopen_s刪除從文本文件的線條,而其他文件試圖訪問

現在我想從文件中刪除某些行的文件。

大多數建議是將我想要的行復制到臨時文件,刪除原始文件,然後將行寫回新創建的文件。

但是,我有一個額外的問題,最多20個其他系統可能試圖同時訪問此文件。它們被編碼爲在添加/刪除它們的數據之前等待文件變得可用。

我很擔心,只要我關閉原始文件(刪除它),其他系統中的其中一個系統將咬入並編輯該文件,將其鎖定到我的原始系統。

任何人都可以提出一種方法,我可以在這個特定的場景中使用。

感謝

回答

0

首先重命名文件(可能使用進程/線程ID的名稱),在同一個文件夾中創建臨時文件,刪除重命名的文件並重新命名臨時文件恢復到原來的名稱。

+0

我看,所以重命名文件首先如此有效,其他進程無法看到它? – user1853330

+0

@ user1853330這是正確的 - 更好地檢查重命名的返回值,以照顧兩個或更多程序試圖同時重命名 –

+0

我檢查重命名的響應並重新嘗試超過10秒,然後退出函數if!= 0。 – user1853330