Node.js 获取节点中子进程的输出时出错

Node.js 获取节点中子进程的输出时出错,node.js,stdout,child-process,Node.js,Stdout,Child Process,我有一个c程序(我没有编码),它在终端上打印一些数据。我使用spawn函数在节点中将程序作为子进程启动 const child_process = spawn('./myProgram', ['--arg']); 之后,我对事件进行编码以获取打印的数据: child_process.stdout.on('data', function(data) { console.log(data); }); 当我运行程序时,我无法在nodejs终端中看到c程序的输出数据。如果我用stdi

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

const child_process = spawn('./myProgram', ['--arg']);
之后,我对事件进行编码以获取打印的数据:

child_process.stdout.on('data', function(data) {
        console.log(data);
});
当我运行程序时,我无法在nodejs终端中看到c程序的输出数据。如果我用stdio作为inherit初始化子进程,它就会工作

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

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

文件输出到
stderr
而不是
stdout
。通过将事件添加到
stderr
,它得到了修复:

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

得到了答案。

这不应该是(…)上的child\u process.stdout吗??是的,你是对的。我漏掉了输入问题。这是否适用于其他程序?一个简单的测试类似于
spawn('ls')
。另一个需要检查的事情是您没有收到任何错误,或者它没有输出到
stderr
。它可以工作。问题在于c程序。我还创建了自己的c程序来测试它,并且可以正常工作。