记事本打败了他们?

某些process.id文件被Windows Server 2012 R2上的某个进程locking。
无法打开它:

可以用记事本打开它

记事本能够打开一个没有其他东西可以locking的文件?

编辑
文件locking代码是使用来自FileChannel的tryLock的 kotlin / java

  val pidFileRw = RandomAccessFile(pidFile, "rw") val pidFileLock = pidFileRw.channel.tryLock() 

基本上它是要求独家locking。 但记事本仍然可以得到它。

记事本首先将文件映射到内存中,而不是使用其他编辑器所使用的“常用”文件读取机制。 该方法允许读取文件,即使它们具有独占的基于范围的锁定。

您可以在C#中实现相同的功能,其中包括:

 using (var f = new FileStream(processIdPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { using (var m = MemoryMappedFile.CreateFromFile(f, null, 0, MemoryMappedFileAccess.Read, null, HandleInheritability.None, true)) { using (var s = m.CreateViewStream(0, 0, MemoryMappedFileAccess.Read)) { using (var r = new StreamReader(s)) { var l = r.ReadToEnd(); Console.WriteLine(l); } } } }