child_process.spawn stdout以块的形式出现

时间:2017-10-10 16:09:27

标签: node.js linux stdout child-process

我试图在linux上运行一个通过stdout输出的二进制文件。如果我从终端运行它,我会得到一个漂亮的数据流打印出来(每50毫秒接近一行)但是如果我从带有child_process.spawn的nodeJS脚本运行它,那么数据每隔5秒就会以块的形式到达

代码段:

 const spawn = require('child_process').spawn;


    // Run all node binaries
for (let i = 0; i < config.dependencies.length; i++) {

  // Get details on this binary
  var repo = config.dependencies[i].name;
  var version = config.dependencies[i].version;
  console.log("Running: " + repo + ' version ' + version);


  // Run this binary
    node_process[i] = spawn('./'+repo+'/'+repo,[], {stdio: ['pipe', 'pipe', 'pipe']})

    node_process[i].stdout.on('data', function(data) {

    stdout_data=config.dependencies[i].name+ ":"+data.toString();
    console.log("Stdout: " + stdout_data)

});
}

我认为我已经完成了从stdout实时打印数据的所有设置,并且我很困惑为什么它没有按预期工作。谢谢你们!

1 个答案:

答案 0 :(得分:0)

弄清楚了!产卵时使用此命令:

spawn('stdbuf', ['-i0', '-o0', '-e0', FilePath])

使用stdbuf在没有缓冲区的情况下生成它。