为什么有些程序无法接收子进程的输出?

为什么有些程序无法接收子进程的输出?

有些程序不显示某些子进程的输出。如你所见是屏幕截图

我尝试在三个控制台实用程序中运行php --version:Git Bash(MinGw)、原生 Windows 8 命令行和 Cygwin 终端。

前两个程序返回有关 PHP 版本的信息,但 Cygwin 不打印任何输出。但是,Cygwin 并不是唯一不打印子进程控制台输出的程序。例如,qmake(Qt Framework 的一部分)在运行 时在 Cygwin 中也不返回任何内容qmake -query。因此,我无法在 PC 上使用 Qt Creator,因为 Qt Creator 无法解析 的输出qmake

有什么办法可以解决这个问题吗?我目前使用的是 Windows 8 x64,但是当我在 PC 上安装 Windows 7 x64 时也出现了这个问题。

答案1

您混淆了术语!

第一个屏幕截图与第二个屏幕截图相同 - 它是一个标准的 Windows 控制台。

第三张截图其实是 mintty 模拟器,而不是真正的控制台。看到名字里的“min”了吗?大量应用程序根本无法在 mintty 中运行!

我认为,解决方案是使用合适的控制台。此外,您可以尝试使用 ConEmu 作为高级 Windows 终端,它“全面且功能齐全”(我是作者)。

至于 QT Creator...尝试使用进程监控器找到问题。是的,这并不快速和容易,但你可以尝试一下。如果它在你拥有的另一台电脑上工作正常,你可以比较你的日志。此外,可能是某些第三方工具安装了全局钩子,干扰了管道的正常行为。可能是其他原因...病毒或防病毒软件,不是吗?

答案2

正如用户 Maximus 所建议的那样这里以前,原因是防病毒软件。在我将 Cygwin 和 Qt 添加到例外列表后,两个程序都开始正常工作。

相关内容