利用NodeJS的子进程(child_process)调用系统命令的方法分享


Posted in NodeJs onJune 05, 2013

NodeJS子进程简介 NodeJS子进程提供了与系统交互的重要接口,其主要API有: 标准输入、标准输出及标准错误输出的接口。

NodeJS子进程简介

NodeJS 子进程提供了与系统交互的重要接口,其主要 API 有:

标准输入、标准输出及标准错误输出的接口
child.stdin 获取标准输入
child.stdout 获取标准输出
child.stderr 获取标准错误输出
获取子进程的PID:child.pid
提供生成子进程的重要方法:child_process.spawn(cmd, args=[], [options])
提供直接执行系统命令的重要方法:child_process.exec(cmd, [options], callback)
提供杀死进程的方法:child.kill(signal='SIGTERM')

实例一:利用子进程获取系统内存使用情况

将以下代码保存为 free.js:

var spawn = require('child_process').spawn, 
free = spawn('free', ['-m']); // 捕获标准输出并将其打印到控制台 
free.stdout.on('data', function (data) { 
console.log('标准输出:\n' + data); 
}); 
// 捕获标准错误输出并将其打印到控制台 
free.stderr.on('data', function (data) { 
console.log('标准错误输出:\n' + data); 
}); 
// 注册子进程关闭事件 
free.on('exit', function (code, signal) { 
console.log('子进程已退出,代码:' + code); 
});

执行代码后的结果:

$ node free.js
标准输出:
total used free shared buffers cached
Mem: 3949 1974 1974 0 135 959
-/+ buffers/cache: 879 3070
Swap: 3905 0 3905

子进程已退出,代码:0
以上输出相当与在命令行执行:free -m 命令。

通过这个简单的例子我们已经对子进程的使用有所了解,下面再来一个示例,用于演示exec 的使用方法。

实例二:利用子进程统计系统登录次数

将下面代码保存为 last.js

var exec = require('child_process').exec, 
last = exec('last | wc -l'); last.stdout.on('data', function (data) { 
console.log('标准输出:' + data); 
}); 
last.on('exit', function (code) { 
console.log('子进程已关闭,代码:' + code); 
});

执行代码:

$ node last.js
标准输出:203

子进程已关闭,代码:0
其与直接在命令行输入:last | wc -l 的结果是一样的。

NodeJs 相关文章推荐
nodejs中使用多线程编程的方法实例
Mar 24 NodeJs
nodejs爬虫抓取数据乱码问题总结
Jul 03 NodeJs
nodejs 中模拟实现 emmiter 自定义事件
Feb 22 NodeJs
nodejs根据ip数组在百度地图中进行定位
Mar 06 NodeJs
nodejs入门教程六:express模块用法示例
Apr 24 NodeJs
详解Windows下安装Nodejs步骤
May 18 NodeJs
nodejs构建本地web测试服务器 如何解决访问静态资源问题
Jul 14 NodeJs
详解redis在nodejs中的应用
May 02 NodeJs
nodejs 日志模块winston的使用方法
May 02 NodeJs
Nodejs处理异常操作示例
Dec 25 NodeJs
nodejs基础之多进程实例详解
Dec 27 NodeJs
nodejs实现日志读取、日志查找及日志刷新的方法分析
May 20 NodeJs
将nodejs打包工具整合到鼠标右键的方法
May 11 #NodeJs
用nodejs写的一个简单项目打包工具
May 11 #NodeJs
nodejs教程 安装express及配置app.js文件的详细步骤
May 11 #NodeJs
nodejs中exports与module.exports的区别详细介绍
Jan 14 #NodeJs
nodejs的require模块(文件模块/核心模块)及路径介绍
Jan 14 #NodeJs
windows系统下简单nodejs安装及环境配置
Jan 08 #NodeJs
NodeJs中的非阻塞方法介绍
Jun 05 #NodeJs
You might like
深入探讨PHP中的内存管理问题
2011/08/31 PHP
thinkphp中多表查询中防止数据重复的sql语句(必看)
2016/09/22 PHP
基于PHP常用文件函数和目录函数整理
2017/08/17 PHP
js里的prototype使用示例
2010/11/19 Javascript
js之ActiveX控件使用说明 new ActiveXObject()
2014/03/03 Javascript
jQuery中使用data()方法读取HTML5自定义属性data-*实例
2014/04/11 Javascript
jquery实现模拟百分比进度条渐变效果代码
2015/10/29 Javascript
javascript实现加载xml文件的方法
2015/11/24 Javascript
微信公众号 摇一摇周边功能开发
2016/12/08 Javascript
微信小程序开发之大转盘 仿天猫超市抽奖实例
2016/12/08 Javascript
老生常谈js-react组件生命周期
2017/05/02 Javascript
基于node.js的fs核心模块读写文件操作(实例讲解)
2017/09/10 Javascript
微信小程序实现长按删除图片的示例
2018/05/18 Javascript
微信小程序页面间值传递的两种方法
2018/11/26 Javascript
Node.js对MongoDB进行增删改查操作的实例代码
2019/04/18 Javascript
基于vue-cli3+typescript的tsx开发模板搭建过程分享
2020/02/28 Javascript
[41:11]完美世界DOTA2联赛PWL S2 Inki vs Magma 第一场 11.22
2020/11/24 DOTA
一个超级简单的python web程序
2014/09/11 Python
python实现决策树C4.5算法详解(在ID3基础上改进)
2017/05/31 Python
Python3 模块、包调用&路径详解
2017/10/25 Python
50行Python代码获取高考志愿信息的实现方法
2019/07/23 Python
python3 pillow模块实现简单验证码
2019/10/31 Python
利用python对excel中一列的时间数据更改格式操作
2020/07/14 Python
python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解
2020/12/22 Python
怀俄明州飞钓:Platte River Fly Shop
2017/12/28 全球购物
澳大利亚女性快速时尚零售商:Ally Fashion
2018/04/25 全球购物
皮姆斯勒语言学习:Pimsleur Language Programs
2018/06/30 全球购物
善意的谎言事例
2014/02/15 职场文书
小学生国庆65周年演讲稿范文(2篇)
2014/09/21 职场文书
上班迟到检讨书300字
2014/10/18 职场文书
简历自荐信范文
2015/03/09 职场文书
2015年纪委工作总结
2015/05/13 职场文书
于丹论语心得观后感
2015/06/15 职场文书
html+css实现赛博朋克风格按钮
2021/05/26 HTML / CSS
Python中的tkinter库简单案例详解
2022/01/22 Python
JS轻量级函数式编程实现XDM二
2022/06/16 Javascript