如前几文所讲,在nodejs中,可以用exefile、spwan调用外部程序。但nodejs还提供有更方便活灵且跨平台的方式:exec。
我们来体验一下它的魅力:
上一节外部应用程序的串联调用中,代码是这样的:
var cp = require("child_process");
var netstat = cp.spawn("netstat",["-an"]);
var echo = cp.spawn("cmd",["echo"]);
netstat.stdout.pipe(echo.stdin);
echo.stdout.pipe(process.stdout);
理解起来稍有点绕,而通过exec,可以简化这段代码,成为:
var cp = require("child_process");
cp.exec("echo | netstat -an",function(err,stdout,stderr){
if(err){
console.error(err);
}
console.log("stdout:",stdout)
console.log("stderr:",stderr);
});
而执行效果:

差异嘛,当然是有的,exec是非实时同步执行。
再来看一下例子,之前讲execFile时,如果直接调用dir,是不能成功的:
var cp = require("child_process");
cp.execFile("dir",function(err,stdout,stderr){
if(err){
console.error(err);
}
console.log("stdout:",stdout)
console.log("stderr:",stderr);
});
执行会报错:

但如果改成exec则可以:


也就是execFile无法调用cmd中的dir指令,而exec可以。
本文介绍在Node.js中使用exec函数调用外部程序的便捷方法,对比exefile、spawn,展示如何简化代码并实现跨平台调用,解决execFile无法调用cmd中指令的问题。
239

被折叠的 条评论
为什么被折叠?



