前言

最近开始学习nodejs,node真是一门神奇的语言,各种回调

在用node-webkit写应用的时候有写到这样一个小工具,调用系统的ping,tracert命令来调试网络。当时用的是exec来返回命令结果给前端,但他的stdout需要在整个命令执行完成后才返回,这样对tracert这种长时间才有最终返回结果的命令来说,用户体验简直差到极致,因为需要等exec返回stdout后才能往页面写内容。

解决

child_process.spawn(command, [args], [options])

最终解决了的这个问题。

var util  = require('util'),
    spawn = require('child_process').spawn,
    cmd   = spawn('ping', ['127.0.0.1']);

cmd.stdout.on('data', function (data) {
  console.log(data);
});

这样就能在调用系统命令的时候实时返回到前端了,而无需等待命令执行完成。

除了stdout,也可以对exec的stderr进行处理:

cmd.stderr.on('data', function(data){});

还有js命令执行结束时的处理:

cmd.on('exit', function(code){});

具体可参考:

http://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options

如果您觉得您在我这里学到了新姿势,博主支持转载,姿势本身就是用来相互学习的。同时,本站文章如未注明均为 hisune 原创 请尊重劳动成果 转载请注明 转自: nodejs中执行系统命令立即输出结果的方法 - hisune.com