1

我需要将输出和错误流从一个 Windows 进程(GNU make.exe 执行 armcc 工具链)重定向到一些用 perl 编写的过滤器。我正在运行的命令是:

Make Release 2>&1 | c:\cygwin\bin\perl ../tools/armfilt.pl

编译过程会抛出一些打印件,这些打印件应该在STDOUT经过一些修改后放置。但是我遇到了一个问题:make 生成的所有打印实际上都被推迟到 make 过程结束,然后才显示给用户。所以,我的问题是:

  1. 为什么会发生?我试图将第二个进程(perl.exe)的优先级从“正常”更改为“高于正常”,但它没有帮助......
  2. 如何克服这个问题?
  3. 我认为可能的解决方法之一可能是仅将STDERR打印件发送到 perl(这是我真正需要的),而不是STDOUT+STDERR. 但我不知道如何在 Windows 中做到这一点。

微软关于管道操作员使用的解释说:

管道运算符 (|) 获取一个命令的输出(默认为 STDOUT)并将其引导到另一个命令的输入(默认为 STDIN)。

但是没有解释如何更改这个默认的 STDOUT 管道。有可能吗?

4

0 回答 0