前言
最近开始学习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
2 Comments
shiqi_dai#197 Reply
test
hiThreaded Comment 197 #198 Reply
@shiqi_dai 欢迎test