利用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中转换URL字符串与查询字符串详解
Nov 26 NodeJs
Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
Jan 01 NodeJs
Highcharts+NodeJS搭建数据可视化平台示例
Jan 01 NodeJs
深入nodejs中流(stream)的理解
Mar 27 NodeJs
详解nodejs的express如何自动生成项目框架
Jul 12 NodeJs
nodejs实现的简单web服务器功能示例
Mar 15 NodeJs
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
Nov 01 NodeJs
详解从NodeJS搭建中间层再谈前后端分离
Nov 13 NodeJs
nodejs 递归拷贝、读取目录下所有文件和目录
Jul 18 NodeJs
通过实例了解Nodejs模块系统及require机制
Jul 16 NodeJs
浅谈使用nodejs搭建web服务器的过程
Jul 20 NodeJs
NodeJS配置CORS实现过程详解
Dec 02 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实现框架(一)
2006/10/09 PHP
聊天室php&mysql(三)
2006/10/09 PHP
Function eregi is deprecated (解决方法)
2013/06/21 PHP
解析如何修改phpmyadmin中的默认登陆超时时间
2013/06/25 PHP
PHP安全的URL字符串base64编码和解码
2014/06/19 PHP
php中判断数组相等的方法以及数组运算符介绍
2015/03/30 PHP
PHP操作MySQL的mysql_fetch_* 函数的常见用法教程
2015/12/25 PHP
php简单获取复选框值的方法
2016/05/11 PHP
基于JQuery的一个简单的鼠标跟随提示效果
2010/09/23 Javascript
js中判断文本框是否为空的两种方法
2011/07/31 Javascript
javascript白色简洁计算器
2015/05/04 Javascript
jQuery解析返回的xml和json方法详解
2017/01/05 Javascript
纯JS实现简单的日历
2017/06/26 Javascript
vue学习之mintui picker选择器实现省市二级联动示例
2017/10/12 Javascript
javascript+HTML5 canvas绘制时钟功能示例
2019/05/15 Javascript
vue中 数字相加为字串转化为数值的例子
2019/11/07 Javascript
微信小程序select下拉框实现源码
2019/11/08 Javascript
Taro UI框架开发小程序实现左滑喜欢右滑不喜欢效果的示例代码
2020/05/18 Javascript
[11:57]《一刀刀一天》第十七期:TI中国军团加油!
2014/05/26 DOTA
python mysqldb连接数据库
2009/03/16 Python
Python函数返回值实例分析
2015/06/08 Python
分析并输出Python代码依赖的库的实现代码
2015/08/09 Python
python迭代dict的key和value的方法
2018/07/06 Python
Python3实现打印任意宽度的菱形代码
2020/04/12 Python
在django中查询获取数据,get, filter,all(),values()操作
2020/08/09 Python
python中的插入排序的简单用法
2021/01/19 Python
任意存:BOXFUL
2018/05/21 全球购物
以工厂直接定价的传奇性能:Ben Hogan Golf
2019/01/04 全球购物
医药营销专业个人自荐信
2013/09/29 职场文书
怎样写好自荐信和推荐信
2013/12/26 职场文书
团日活动总结怎么写
2014/06/25 职场文书
大学奖学金获奖感言
2014/08/15 职场文书
2016七一建党节慰问信
2015/11/30 职场文书
八年级语文教学反思
2016/03/03 职场文书
浅谈mysql增加索引不生效的几种情况
2021/06/23 MySQL
Java中生成微信小程序太阳码的实现方案
2022/06/01 Java/Android