利用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 28 NodeJs
NodeJS与Mysql的交互示例代码
Aug 18 NodeJs
轻松创建nodejs服务器(10):处理上传图片
Dec 18 NodeJs
NodeJS学习笔记之Connect中间件模块(一)
Jan 27 NodeJs
学习 NodeJS 第八天:Socket 通讯实例
Dec 21 NodeJs
Nodejs 获取时间加手机标识的32位标识实现代码
Mar 07 NodeJs
NodeJS实现微信公众号关注后自动回复功能
May 31 NodeJs
NodeJs使用Mysql模块实现事务处理实例
May 31 NodeJs
Nodejs之TCP服务端与客户端聊天程序详解
Jul 07 NodeJs
Mac下通过brew安装指定版本的nodejs教程
May 17 NodeJs
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
Nov 01 NodeJs
Nodejs中获取当前函数被调用的行数及文件名详解
Dec 12 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
虫族 Zerg 魔法科技
2020/03/14 星际争霸
PHP修改session_id示例代码
2014/01/08 PHP
laravel异步监控定时调度器实例详解
2019/06/21 PHP
phpinfo的知识点总结
2019/10/10 PHP
JS中如何设置readOnly的值
2013/12/25 Javascript
深入理解javascript的执行顺序
2014/04/04 Javascript
Android中的jQuery:AQuery简介
2014/05/06 Javascript
兼容主流浏览器的jQuery+CSS 实现遮罩层的简单代码
2014/10/14 Javascript
javascript中的this详解
2014/12/08 Javascript
jquery实现搜索框常见效果的方法
2015/01/22 Javascript
提交按钮的name='submit'引起的js失效问题及原因
2015/02/25 Javascript
纯javascript实现分页(两种方法)
2015/08/26 Javascript
使用CSS+JavaScript或纯js实现半透明遮罩效果的实例分享
2016/05/09 Javascript
iscroll碰到Select无法选择下拉刷新的解决办法
2016/05/21 Javascript
Bootstrap Table服务器分页与在线编辑应用总结
2016/08/08 Javascript
原生javascript移动端滑动banner效果
2017/03/10 Javascript
jQuery动态产生select option下拉列表
2017/03/15 Javascript
解决JS表单验证只有第一个IF起作用的问题
2018/12/04 Javascript
JavaScript简单编程实例学习
2020/02/14 Javascript
JS实现图片幻灯片效果代码实例
2020/05/21 Javascript
微信小程序的引导页实现代码
2020/06/24 Javascript
Vue父子之间值传递的实例教程
2020/07/02 Javascript
基于elementUI竖向表格、和并列的案例
2020/10/26 Javascript
javascript中闭包closure的深入讲解
2021/03/03 Javascript
django修改models重建数据库的操作
2020/03/31 Python
基于python 将列表作为参数传入函数时的测试与理解
2020/06/05 Python
巴西24小时在线药房:Droga Raia
2020/05/12 全球购物
什么是触发器(trigger)? 触发器有什么作用?
2013/09/18 面试题
高中生自我评价个人范文
2013/11/09 职场文书
资产经营总监岗位职责
2013/12/04 职场文书
五一服装活动方案
2014/01/11 职场文书
迟到检讨书大全
2014/01/25 职场文书
高中生操行评语大全
2014/04/25 职场文书
设计专业自荐信
2014/06/19 职场文书
外国人来华邀请函
2015/01/31 职场文书
简单了解 MySQL 中相关的锁
2021/05/25 MySQL