2012-08-29 54 views
3

有沒有辦法寫入鎖定的文件,而不管打開哪個程序/進程?無論鎖定狀態如何,寫入鎖定的文件

場景:

  • 作爲服務運行一個商業產品,鎖定一個日誌文件。
  • 服務無法停止,因爲它會影響客戶。
  • 想在文件末尾註入一行作爲標記。

獲取錯誤:進程無法訪問文件,因爲它正在被另一個進程使用。

是否有追加的鎖定文件中的行什麼辦法?

而且,怕打破鎖定狀態,因爲這可能會導致商業計劃打破。

最初想到批處理文件,直到找出日誌文件被鎖定。將做PowerShell或任何語言可以將此取消。

+0

無論您做什麼,持有鎖的程序都會覆蓋您的標記,因爲它的文件位置指針位於其之前它寫入。 –

+0

不可以。正如@David所說,如果你這樣做了,最終會被覆蓋。想想看:我打開了文件並寫入了10個字節,然後在文件末尾寫了一行文本。我仍然認爲文件的末尾在第10個字節處,並且從第11個字節開始寫下一行(覆蓋您添加的行)。文件鎖定出於某種原因 - 防止其他人在鎖定文件時訪問該文件。 –

+0

感謝大衛和肯,好點。希望文件將被鎖定,但他們只是附加。但如果它被鎖定,那麼它可能使用文件指針而不是追加。任何方式來添加一行只是爲了看看會發生什麼? –

回答

3

,lock(ed)文件的整個想法是,擁有鎖的進程不必擔心其他進程正在修改文件,因此鎖所有者不必查詢文件系統所有的時間,並可以更有效地做到這一點。
請參閱「David Schwartz」和「Ken White」的更早評論