gpt4 book ai didi

.net - stdout 是否附加了缓冲区大小?

转载 作者:可可西里 更新时间:2023-11-01 12:36:38 24 4
gpt4 key购买 nike

我正在尝试查找与 Windows 上的标准输出相关的数据限制的一些信息。我在 MSDN 上好像找不到资料。

  1. 写入 stdout 的数据量是否有限制?如果是这样,如果达到限制会发生什么?数据丢失了吗?

  2. 如果重定向标准输出(例如,通过从 .Net 启动进程并使用 ProcessStartInfo.RedirectStandardOutput 属性),这对可以写入的数据量有什么影响吗?正如我在调用过程中从标准输出流中读取的那样,这是否会影响限制?

  3. 这些限制是否以任何方式与命名管道相关?

最佳答案

这取决于它的去向 - 但是是的,如果您在 .NET 中重定向输出,如果您不读取输出,则很容易遇到问题。当缓冲区用完时,子进程中的 stdout 写入将被阻塞。死锁的一个常见原因是“父”进程等待“子”退出,然后读取输出——如果子需要父进程读取输出以释放缓冲区空间,这将不起作用。

.NET 通过使用 Process.OutputDataReceivedProcess.ErrorDataReceived 允许事件驱动的方法使这稍微容易一些。这意味着您不需要启动两个线程(一个用于读取 stdout,一个用于读取 stderr)只是为了防止进程阻塞...

关于.net - stdout 是否附加了缓冲区大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2066242/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com