child_process.spawn标准输出块

我想在Linux上运行一个二进制文件,通过标准输出。 如果我从terminal运行它,我会得到一个美丽的数据stream打印出来(每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实时打印数据,我很困惑,为什么这不像预期的那样工作。 多谢你们!

知道了! 产卵时使用此命令:

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

使用stdbuf产生它没有缓冲区。