利用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异步编程
Dec 04 NodeJs
nodejs批量修改文件编码格式
Jan 22 NodeJs
Windows系统中安装nodejs图文教程
Feb 28 NodeJs
Nodejs中Express 常用中间件 body-parser 实现解析
May 22 NodeJs
Nodejs搭建wss服务器教程
May 24 NodeJs
Nodejs+express+ejs简单使用实例代码
Sep 18 NodeJs
在Debian(Raspberry Pi)树莓派上安装NodeJS的教程详解
Sep 19 NodeJs
Mac下通过brew安装指定版本的nodejs教程
May 17 NodeJs
NodeJS如何实现同步的方法示例
Aug 24 NodeJs
NodeJs之word文件生成与解析的实现代码
Apr 01 NodeJs
使用nodejs实现JSON文件自动转Excel的工具(推荐)
Jun 24 NodeJs
分享五个Node.js开发的优秀实践 
Apr 07 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 array_flip() 删除重复数组元素专用函数
2010/05/16 PHP
php中转义mysql语句的实现代码
2011/06/24 PHP
如何获知PHP程序占用多少内存(memory_get_usage)
2012/09/23 PHP
PHP实现把数字ID转字母ID
2013/08/12 PHP
PHP简单获取视频预览图的方法
2015/03/12 PHP
Yii2中事务的使用实例代码详解
2016/09/07 PHP
onkeydown事件解决按回车键直接提交数据的需求
2013/04/11 Javascript
如何使用jquery控制CSS样式,并且取消Css样式(如背景色,有实例)
2013/07/09 Javascript
跟我学Nodejs(一)--- Node.js简介及安装开发环境
2014/05/20 NodeJs
javascript实现炫酷的拖动分页
2015/05/11 Javascript
JavaScript中解析JSON数据的三种方法
2015/07/03 Javascript
js实现C#的StringBuilder效果完整实例
2015/12/22 Javascript
js 获取本地文件及目录的方法(推荐)
2016/11/10 Javascript
微信小程序 转发功能的实现
2017/08/04 Javascript
node中的cookie的具体使用
2018/09/13 Javascript
解决Vue在封装了Axios后手动刷新页面拦截器无效的问题
2018/11/08 Javascript
js最实用string(字符串)类型的使用及截取与拼接详解
2019/04/26 Javascript
微信分享invalid signature签名错误踩过的坑
2020/04/11 Javascript
使用Vue Composition API写出清晰、可扩展的表单实现
2020/06/10 Javascript
对于Python的框架中一些会话程序的管理
2015/04/20 Python
在Python的Django框架中调用方法和处理无效变量
2015/07/15 Python
详谈Python高阶函数与函数装饰器(推荐)
2017/09/30 Python
Python探索之修改Python搜索路径
2017/10/25 Python
python3利用smtplib通过qq邮箱发送邮件方法示例
2017/12/03 Python
python在html中插入简单的代码并加上时间戳的方法
2018/10/16 Python
在pycharm 中添加运行参数的操作方法
2019/01/19 Python
Pandas透视表(pivot_table)详解
2019/07/22 Python
python实现while循环打印星星的四种形状
2019/11/23 Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
2020/06/30 Python
党员干部2014全国两会学习心得体会
2014/03/10 职场文书
cf战队收人广告词
2014/03/14 职场文书
银行先进个人事迹材料
2014/05/11 职场文书
入党积极分子党小组意见
2015/06/02 职场文书
初中政治教学反思
2016/02/23 职场文书
html中显示特殊符号(附带特殊字符对应表)
2021/06/21 HTML / CSS
win10系统xps文件怎么打开?win10打开xps文件的两种操作方法
2022/07/23 数码科技