child_process.spawn 标准输出成块出现
child_process.spawn stdout coming in chunks
我正在尝试 运行 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 实时打印数据的所有设置,但我很困惑为什么这不能按预期工作。谢谢大家!
明白了!产卵时使用此命令:
spawn('stdbuf', ['-i0', '-o0', '-e0', FilePath])
使用 stdbuf 在没有缓冲区的情况下生成它。
我正在尝试 运行 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 实时打印数据的所有设置,但我很困惑为什么这不能按预期工作。谢谢大家!
明白了!产卵时使用此命令:
spawn('stdbuf', ['-i0', '-o0', '-e0', FilePath])
使用 stdbuf 在没有缓冲区的情况下生成它。