【问题标题】:Error getting the output of child process in node在节点中获取子进程的输出时出错
【发布时间】:2020-12-02 19:01:41
【问题描述】:

我有一个在终端中打印一些数据的 c 程序(我没有编写代码)。我使用 spawn 函数将程序作为节点中的子进程启动。

const child_process = spawn('./myProgram', ['--arg']);

之后,我对事件进行编码以获取打印数据:

child_process.stdout.on('data', function(data) {
        console.log(data);
});

当我运行程序时,我无法在我的 nodejs 终端中看到我的 c 程序的输出数据。如果我用 stdio 初始化子进程作为继承它可以工作。

const child_process = spawn('./myProgram', ['--arg'], {stdio :'inherit'});

这里的关键是我需要在我的 nodejs 应用程序中处理这些数据。我想c文件打印数据的方式不是标准的,所以我的nodjs程序没有得到。

【问题讨论】:

  • 不应该是child_process.stdout.on(...)吗?
  • 是的,你是对的。我错过了输入问题。
  • 这适用于其他程序吗?一个简单的测试就像spawn('ls')
  • 要检查的另一件事是您没有收到任何错误,或者它没有输出到stderr
  • 它有效。问题出在那个c程序上。我还创建了自己的 c 程序来对其进行测试和工作。

标签: node.js stdout child-process


【解决方案1】:

文件正在输出到stderr,而不是stdout。通过将事件添加到 stderr 已修复:

child_process.stderr.on('data', function(data) {
        console.log(data);
});

@tadman得到了答复。

【讨论】:

    猜你喜欢
    • 2013-08-18
    • 2011-09-08
    • 2010-10-22
    • 2021-04-15
    • 2015-06-08
    • 1970-01-01
    相关资源
    最近更新 更多