博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Node模块--child_process
阅读量:7047 次
发布时间:2019-06-28

本文共 991 字,大约阅读时间需要 3 分钟。

1.说明

child_process 模块是 Node.js 的原始模块:

  1. 主要作用:执行命令行命令
  2. 该模块的功能主要由 child_process.spawn() 函数提供

2.区分exec和spawn

2-1 exec执行命令

const {  exec} = require('child_process');exec('ls -la /usr', (error, stdout, stderr) => {  console.log(error);  console.log(stdout);  console.log(stderr);});
  • 第一个参数是将要执行的命令,命令之间的参数使用空格分开
  • 第二个参数是回调函数,有三个参数
回调中的第一个参数:命令执行错误会有值,否则为null回调中的第二个参数:子进程的正常输出内容回调中的第三个参数:子进程执行错误的输出

2-2 spawn命令

const {  spawn} = require('child_process');const ls = spawn('ls', ['-la', '/usr']);ls.stdout.on('data', (data) => {  console.log(`stdout: ${data}`);});ls.stderr.on('data', (data) => {  console.log(`stderr: ${data}`);});ls.on('close', (code) => {  console.log(`子进程退出码:${code}`);});
  • 第一个参数是命令
  • 第二个参数是一个数组,数组中的每一个元素是执行命令需要的参数

需要特别注意的是,需要获取执行的内容需要通过流的形式来进行输出

2-3 两者对比

相同点:

  • 都可以用来执行命令行命令

不同点:

  • exec 用来执行命令,命令和命令后跟的参数是写在一个字符串中,作为函数的第一个参数
  • spawn 用来执行命令,命令和命令后跟的参数是分开写的
  • exec 的输出内容是在回调中输出的,一次性分配 200K 大小的内存空间,如果超出这个大小会报错
  • spawn 的输出内容是通过流的形式进行输出的,没有分配空间,不会报错

总结:spawn 比 exec 使用范围要广,因此,能使用 spawn 的尽量使用 spawn。

转载地址:http://ofcol.baihongyu.com/

你可能感兴趣的文章
[ZJOI2017]树状数组
查看>>
内容显示在HTML页面底端的一些处理方式
查看>>
IE, FireFox, Opera 浏览器支持CSS实现Alpha半透明的方法
查看>>
bootstrap 智能表单 demo示例
查看>>
生成器函数进阶
查看>>
spring中InitializingBean接口使用理解(转)
查看>>
js作用域和作用域链
查看>>
NX签名//NXOpen VB.Net / C# Sign
查看>>
Mac下安装nginx
查看>>
Python菜鸟之路:Django 路由补充1:FBV和CBV - 补充2:url默认参数
查看>>
【转】生活感悟
查看>>
smarty练习: 设置试题及打印试卷
查看>>
maven 项目打包配置(build节点)
查看>>
保存指定品质的图片
查看>>
多目标跟踪baseline methods
查看>>
关于QT_Creator不能在线调试问题
查看>>
六、python小功能记录——递归删除bin和obj内文件
查看>>
阅读《移山之道》及讲义感想
查看>>
python进阶-面向对象编程五:类的内置方法
查看>>
JAVA入门到精通-第52讲-面试题讲评
查看>>