Node.js:如何从执行的二进制文件中接收STDOUT和STDERR?

时间:2017-12-11 20:00:49

标签: javascript node.js pipe stdout stderr

假设我有一个程序foo

#include <iostream>

int main() {
  std::cout << "a1" << std::endl;
  std::cerr << "b2" << std::endl;
  std::cout << "c3" << std::endl;
  return 0;
}
enter code here

通过终端执行时打印

a1
b2
c3

您可以通过foo &> out.log或仅使用foo 2>&1将此输出转换为bash文件,但是如何使用node.js来执行此操作?

execFile分别返回stdout和stderr(无法在输出中找到它们的原始位置)。连接到data事件也不起作用,因为它看起来像是内部缓冲,有时将两条标准线捆绑在一起,即使它们被stderr分开。 因此,两者都接近我的js程序,而不是打印

a1
c3
b2

而不是所需的输出。我真的不想通过bash代理执行foo只是为了获得正确的stderr重定向。

0 个答案:

没有答案