我正在尝试查找与 Windows 上的 stdout 相关的数据限制的一些信息。我似乎无法在 MSDN 上找到相关信息。
最佳答案
这取决于它的去向 - 但是是的,如果您在 .NET 中重定向输出,如果您不读取输出,很容易遇到问题。当缓冲区用完时,写入子进程中的 stdout 将被阻塞。死锁的一个常见原因是“父”进程等待“子”退出,然后读取输出 - 如果子需要父读取输出以释放缓冲区空间,这将不起作用。
.NET 通过允许使用 Process.OutputDataReceived
和 Process.ErrorDataReceived
的事件驱动方法使这变得稍微容易一些。这意味着您不需要启动两个线程(一个用于读取 stdout,一个用于读取 stderr)只是为了防止进程阻塞...
关于.net - 是否有附加到标准输出的缓冲区大小?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2066242/