利用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 31 NodeJs
nodejs的10个性能优化技巧
Jul 15 NodeJs
nodejs npm package.json中文文档
Sep 04 NodeJs
nodejs中使用多线程编程的方法实例
Mar 24 NodeJs
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
Dec 30 NodeJs
nodejs和php实现图片访问实时处理
Jan 05 NodeJs
nodejs开发——express路由与中间件
Mar 24 NodeJs
Nodejs中使用phantom将html转为pdf或图片格式的方法
Sep 18 NodeJs
nodejs取得当前执行路径的方法
May 13 NodeJs
Nodejs实现图片上传、压缩预览、定时删除功能
Oct 25 NodeJs
Nodejs环境实现socket通信过程解析
Jul 03 NodeJs
浅谈Node的内存泄露问题
May 06 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 全文搜索和替换的实现代码
2008/07/29 PHP
PHP实现批量检测网站是否能够正常打开的方法
2016/08/23 PHP
PDO::rollBack讲解
2019/01/29 PHP
php面向对象程序设计入门教程
2019/06/22 PHP
给Javascript数组插入一条记录的代码
2007/08/30 Javascript
flexigrid 参数说明
2010/11/23 Javascript
js时间比较示例分享(日期比较)
2014/03/05 Javascript
使用js实现的简单拖拽效果
2015/03/18 Javascript
jquery-tips悬浮提示插件分享
2015/07/31 Javascript
JS与jQuery实现隔行变色的方法
2016/09/09 Javascript
微信小程序 Record API详解及实例代码
2016/09/30 Javascript
简单实现js浮动框
2016/12/13 Javascript
layui中layer前端组件实现图片显示功能的方法分析
2017/10/13 Javascript
JS实现的数组去除重复数据算法小结
2017/11/17 Javascript
JS写XSS cookie stealer来窃取密码的步骤详解
2017/11/20 Javascript
D3.js实现简洁实用的动态仪表盘的示例
2018/04/04 Javascript
JavaScript中arguments和this对象用法分析
2018/08/08 Javascript
django轻松使用富文本编辑器CKEditor的方法
2017/03/30 Python
python的文件操作方法汇总
2017/11/10 Python
python机器学习理论与实战(六)支持向量机
2018/01/19 Python
python实现五子棋人机对战游戏
2020/03/25 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
2019/07/16 Python
python实现逆滤波与维纳滤波示例
2020/02/26 Python
Python解析微信dat文件的方法
2020/11/30 Python
Bandier官网:奢侈、时尚前卫的健身服装首选目的地
2020/07/05 全球购物
linux面试相关问题
2013/04/28 面试题
学校运动会开幕演讲稿
2014/01/04 职场文书
先进德育工作者事迹材料
2014/01/24 职场文书
优秀毕业生的求职信
2014/07/21 职场文书
机械操作工岗位职责
2014/08/08 职场文书
办理房产过户的委托书
2014/09/14 职场文书
总经理助理岗位职责范本
2015/03/31 职场文书
赵氏孤儿观后感
2015/06/09 职场文书
电影雷锋观后感
2015/06/10 职场文书
高中班主任心得体会
2016/01/07 职场文书
餐饮行业关注的9大营销策略
2019/08/26 职场文书