我正在尝试编写一个小命令脚本来代理我项目中的其他脚本,并且我正在尝试使用 node 将标准输出从生成的进程通过管道传输到当前进程的标准输出:
function runCommand(command, arguments) {
var commandProcess = childProcess.spawn(command, arguments);
commandProcess.stdout.pipe(process.stdout);
commandProcess.on("exit", process.exit);
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,直到我开始从我的子进程中获得大量输出(例如,其中一个是 maven 命令)。我看到的是它只打印出标准输出的前 8192 个字节,然后将其余的存储到下一个“数据”事件。然后它打印出下一个 8192 等等。这意味着输出有延迟,有时当我们运行服务器进程时,它有时会停止打印,直到您触发服务器上的某些内容触发另一个“数据”事件。
有没有办法增加这个缓冲区的大小或避免这种行为?理想情况下,这个指挥官脚本只是我们其他脚本的代理,并且应该完全按原样打印出所有内容。