我想使用C#/ .NET在Windows 7主機上打開附加文件。我想爲此使用通常的文件輸出操作。我發現這樣的解決方案:如何設置文件權限以防止其他人對我的文件進行獨佔鎖定?
FileStream trace_fd = new FileStream(r"c:\temp\testlog.txt",
FileMode.Append,
FileAccess.Write,
FileShare.ReadWrite)
即使我的程序與上面的行啓動並運行,我的跟蹤文件是可讀的。我沒有例外,該文件是由另一個進程使用了從正確的代碼是這樣的:
FileStream good_logreader_fd = new FileStream("c:\temp\testlog.txt",
FileMode.Read,
FileAccess.Read,
FileShare.ReadWrite)
然後,我有這樣的行另一程序(越野車的日誌掃描器):
FileStream bad_logreader_fd = new FileStream("c:\temp\testlog.txt",
FileMode.Read,
FileAccess.Read,
FileShare.None)
這樣的行顯然是日誌掃描程序的一個缺陷。如果我的程序沒有運行,那麼buggy logcaner將獲得獨佔鎖定,並且隨後運行我的程序將無法獲取跟蹤文件的fd。
我的問題是我能做些什麼來防止這種可怕的情況發生。 例如我可以爲跟蹤文件設置文件權限以防止任何人進行獨佔鎖定嗎?如果是,那麼如何?還有什麼可以保護我的程序免受buggy日誌掃描程序問題的影響?請注意,我必須在我的程序運行之間保留相同的跟蹤文件名。