gpt4 book ai didi

windows - 为什么某些 cmd 启动的进程在重定向输出时会阻止/缓冲输出?

转载 作者:可可西里 更新时间:2023-11-01 09:35:53 24 4
gpt4 key购买 nike

为什么某些进程在我的 Windows 机器上的命令行中启动,如果重定向,则阻止/缓冲它们的整个输出,而其他进程则没有?

示例:tracert 不会在写入时阻止/缓冲输出。如果执行:

tracert ponyoverflow.com > output.txt

...output.txt 文件随时间增长。这完全是我期望事情表现的方式。

但是,我正在尝试使用潜在供应商的软件产品(iSpring SDK,如果您必须知道的话),它似乎会缓冲完整的输出,直到该过程完成。让我感到困惑的是,当这个软件在命令行运行时,输出会像预期的那样零碎地、逐行地出现。

为什么调用它时使用和不使用输出重定向在行为上存在差异?

跟进杂项问题:

  • 这在 Windows 命令行编程领域是否普遍和/或标准?
  • 有什么我可以做的来捕获
  • 用 Windows 程序员的话说,我如何准确地向 iSpring 人员传达我认为他们的软件在命令行下的行为方式?

我不确定它有多重要,但我的所有这些实验都是在 64 位 Windows 7 家庭高级版机器上进行的。

最佳答案

(iSpring 的人员对我的请求的响应速度比我想象的要快得多。没错。下面是他们对“为什么”的回答。)

默认情况下,C++ 中的标准输出是缓冲的。缓冲区大小约为 4KB。当应用程序完成时缓冲区被刷新。当标准输出与控制台连接时,写入标准输出的数据不会被缓冲。

关于windows - 为什么某些 cmd 启动的进程在重定向输出时会阻止/缓冲输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2409474/

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