2011-12-12 47 views
0

我有一個小應用程序,顯示一個日誌文件的內容,有點transmogied爲了可讀性。由於日誌文件偶爾被重寫,而Windows文件系統語義禁止刪除打開的文件,因此我創建了一個指向該文件的硬鏈接。隱形硬鏈接

顯然,這需要在與原始文件相同的文件系統上發生 - 目前,我在同一個目錄中創建硬盤,我相信這可以合理地假設滿足這個要求;結果是臨時文件出現在目錄列表中用戶剛點擊打開文件的地方,這很醜陋。

有沒有辦法創建一個硬鏈接,使其不顯示(程序使用的客戶在其目錄樹中有幾個連接點,所以不能認爲特定的目錄在同一個文件系統上) ,還是有更好的方法來讀取另一個進程可能想要刪除和重寫的文件(例如通過在讓其他進程的訪問通過之前捕獲它們的訪問並關閉文件),因此該程序可以用於歸檔(只讀)日誌文件沒有修改?

+2

在CreateFile()調用中使用FILE_SHARE_DELETE選項,以便另一個進程可以在文件正在使用時刪除該文件。該文件實際上並沒有從文件系統中消失,直到最後一個句柄關閉。 –

回答

0
  1. 沒有
  2. 它不會,如果你能有所幫助。共享跨越鏈接。
  3. 使用Hans Passant提出的解決方案作爲評論。