如何运行命令行并尽快获取输出以显示它们.
例如,如果在Linux系统上运行ping命令,它将永远不会停止,现在是否可以在命令仍在处理时获取响应?或者让我们接受apt-get install
命令,如果我想在运行时显示安装进度怎么办?
实际上我正在使用这个函数执行命令行并获取输出,但是在命令行结束之前函数不会返回,所以如果我运行ping命令它将永远不会返回!
var sys = require('sys'), exec = require('child_process').exec; function getOutput(command,callback){ exec( command, ( function(){ return function(err,data,stderr){ callback(data); } } )(callback) ); }
Ben Fortune.. 6
尝试使用spawn而不是exec,然后您可以点击流并收听数据和结束事件.
var process = require('child_process'); var cmd = process.spawn(command); cmd.stdout.on('data', function(output){ console.log(output.toString()): }); cmd.on('close', function(){ console.log('Finished'); }); //Error handling cmd.stderr.on('data', function(err){ console.log(err); });
请参阅Node.js文档spawn
:https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options