2012-08-29 51 views
3

有没有办法写入锁定的文件,而不管打开哪个程序/进程?无论锁定状态如何,写入锁定的文件

场景:

  • 作为服务运行一个商业产品,锁定一个日志文件。
  • 服务无法停止,因为它会影响客户。
  • 想在文件末尾注入一行作为标记。

获取错误:进程无法访问文件,因为它正在被另一个进程使用。

是否有追加的锁定文件中的行什么办法?

而且,怕打破锁定状态,因为这可能会导致商业计划打破。

最初想到批处理文件,直到找出日志文件被锁定。将做PowerShell或任何语言可以将此取消。

+0

无论您做什么,持有锁的程序都会覆盖您的标记,因为它的文件位置指针位于其之前它写入。 –

+0

不可以。正如@David所说,如果你这样做了,最终会被覆盖。想想看:我打开了文件并写入了10个字节,然后在文件末尾写了一行文本。我仍然认为文件的末尾在第10个字节处,并且从第11个字节开始写下一行(覆盖您添加的行)。文件锁定出于某种原因 - 防止其他人在锁定文件时访问该文件。 –

+0

感谢大卫和肯,好点。希望文件将被锁定,但他们只是附加。但如果它被锁定,那么它可能使用文件指针而不是追加。任何方式来添加一行只是为了看看会发生什么? –

回答

3

,lock(ed)文件的整个想法是,拥有锁的进程不必担心其他进程正在修改文件,因此锁所有者不必查询文件系统所有的时间,并可以更有效地做到这一点。
请参阅“David Schwartz”和“Ken White”的更早评论