Nodejs:立即获取stdout,而不是childprocess.spawnSync中的块

问题描述 投票:0回答:1

我使用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();
node.js
1个回答
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());
© www.soinside.com 2019 - 2024. All rights reserved.