laravel process没有执行node_Node.JS实战23:方便活灵的exec

如前几文所讲,在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);});

而执行效果:

e3c59c60112a4d75a5bffc7d0be3624b.png

差异嘛,当然是有的,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);});

执行会报错:

0a8930d44af2a45b3a989c747bad32e0.png

但如果改成exec则可以:

d9c4dd0ee4aa91e66649af73c7b678eb.png
0d1958dbdbdad5cc5b1a7028d295ae90.png

也就是execFile无法调用cmd中的dir指令,而exec可以。

更多本系列文章:

Node.JS实战22:外部应用程序中的串联调用

Node.JS实战21:流和外部应用程序、实时数据输出

Node.JS实战20:用execFile执行外部程序

Node.JS实战19:实现加密的tcp、https服务器

Node.JS实战18:创建DNS请求、查询域名IP

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值