我正在尝试查找这些信息。
显然,微软没有提供可靠地读取进程
死锁问题 http://www.codeducky.org/process-handling-net/ 较不明显的问题是死锁。所有三个进程流(输入、输出和错误)在内容缓冲区方面都有限制。如果内部缓冲区填满,则正在写入流的人将被阻塞。例如,在此代码中,我们在进程退出后才从输出和错误流中读取数据。这意味着我们可能会发现外部进程用尽其错误缓冲区的情况。在这种情况下,外部进程将阻塞写入标准错误,而我们的.NET应用程序将阻塞读取标准输出的末尾。因此,我们陷入了死锁!
没有可靠的代码
有一个获得了265次赞的答案,但我不打算使用它,因为它会出现
ProcessStartInfo hanging on "WaitForExit"? Why? 在它被发现会导致
死锁的机会有多大?
我想知道进入死锁状态的机会有多大。 为此,我需要知道Windows 7下stderr和stdout的缓冲区大小。
如何找到它们? 我以为我可以打印几个文件,看看哪个文件尺寸大概会导致问题,但在Windows 7下没有这个命令。我甚至尝试使用
stdout
和stderr
的代码,而不会出现死锁、异常和其他问题。死锁问题 http://www.codeducky.org/process-handling-net/ 较不明显的问题是死锁。所有三个进程流(输入、输出和错误)在内容缓冲区方面都有限制。如果内部缓冲区填满,则正在写入流的人将被阻塞。例如,在此代码中,我们在进程退出后才从输出和错误流中读取数据。这意味着我们可能会发现外部进程用尽其错误缓冲区的情况。在这种情况下,外部进程将阻塞写入标准错误,而我们的.NET应用程序将阻塞读取标准输出的末尾。因此,我们陷入了死锁!
没有可靠的代码
有一个获得了265次赞的答案,但我不打算使用它,因为它会出现
ObjectDisposeException
并需要超时:ProcessStartInfo hanging on "WaitForExit"? Why? 在它被发现会导致
ObjectDisposeException
之前,它可能已经获得了赞。死锁的机会有多大?
我想知道进入死锁状态的机会有多大。 为此,我需要知道Windows 7下stderr和stdout的缓冲区大小。
如何找到它们? 我以为我可以打印几个文件,看看哪个文件尺寸大概会导致问题,但在Windows 7下没有这个命令。我甚至尝试使用
git cat-file
,但它的文档很差,没有使用示例,也没有人回答有关它的问题:https://stackoverflow.com/questions/43203902/how-to-git-cat-file-a-file-in-current-dir