Node.js:立即获取标准输出,而不是在childprocess.spawnSync中以块的形式获取

时间:2019-02-12 15:21:30

标签: node.js

我正在使用nodejs“ child_process.spawnSync”来执行一些任务。我接收输出数据是成块的而不是一次。我正在使用以下代码,我有一种解决方法。但是有什么更好的方法吗?

var cp = require('child_process');
var child = cp.spawnSync("g++", ['sample.cpp']); //the array is the arguments
var child1 = cp.spawn("./a.out")
var val = "Hello \n 1 2 3 4 5"
child1.stdin.write(val); //my command takes a markdown string...
var final="";
child1.stdout.on('data', function (data) {
        console.log('stdout: ' + data);
    final+=data
});

child1.on('exit',function(a,b){
    console.log(final);
});

child1.stdin.end();

1 个答案:

答案 0 :(得分:0)

您的代码是正确的,这是从异步进程中读取标准输出的典型“通用”方式。

为简化起见,可以使用spawnSync的input选项,然后读取生成的stdout缓冲区:

cp.spawnSync("g++", ['sample.cpp']);

var val = "Hello \n 1 2 3 4 5";
var result = cp.spawnSync('./a.out', { input: val });

console.log(result.stdout.toString());