例如,如果在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) ); }
尝试使用spawn而不是exec,然后你可以点击流,并听取数据和结束事件。
var process = require('child_process'); var cmd = process.spawn(command); cmd.stdout.on('data', function(output){ console.log(output): }); cmd.on('close', function(){ console.log('Finished'); }); //Error handling cmd.stderr.on('data', function(err){ console.log(err); });