我正在使用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();
答案 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());