利用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 Post请求报socket hang up错误的解决办法
Sep 25 NodeJs
Nodejs Express4.x开发框架随手笔记
Nov 23 NodeJs
Nodejs全局安装和本地安装的不同之处
Jul 04 NodeJs
简单实现nodejs上传功能
Jan 14 NodeJs
Nodejs读取文件时相对路径的正确写法(使用fs模块)
Apr 27 NodeJs
Nodejs之http的表单提交
Jul 07 NodeJs
nodejs 图解express+supervisor+ejs的用法(推荐)
Sep 08 NodeJs
Nodejs+angularjs结合multiparty实现多图片上传的示例代码
Sep 29 NodeJs
Nodejs使用Mongodb存储与提供后端CRD服务详解
Sep 04 NodeJs
详解微信小程序-获取用户session_key,openid,unionid - 后端为nodejs
Apr 29 NodeJs
nodejs读取图片返回给浏览器显示
Jul 25 NodeJs
NodeJS模块Buffer原理及使用方法解析
Nov 11 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封装的字符串加密解密函数
2015/12/18 PHP
php实现图片以base64显示的方法
2016/10/13 PHP
checkbox全选/取消全选以及checkbox遍历jQuery实现代码
2009/12/02 Javascript
combox改进版 页面原型参考dojo的,比网上jQuery的那些combox功能强,代码更小
2010/04/15 Javascript
js中关于new Object时传参的一些细节分析
2011/03/13 Javascript
JQuery扩展插件Validate—4设置错误提示的样式
2011/09/05 Javascript
关于全局变量和局部变量的那些事
2013/01/11 Javascript
nodejs获取本机内网和外网ip地址的实现代码
2014/06/01 NodeJs
7个jQuery最佳实践
2016/01/12 Javascript
Bootstrap入门书籍之(五)导航条、分页导航
2016/02/17 Javascript
JavaScript字符串常用的方法
2016/03/10 Javascript
浅析jQuery Ajax通用js封装
2016/06/22 Javascript
js图片延迟加载(Lazyload)三种实现方式
2017/03/01 Javascript
vue bootstrap小例子一枚
2017/06/09 Javascript
JavaScript实现重力下落与弹性效果的方法分析
2017/12/20 Javascript
详解Vue.js 作用域、slot用法(单个slot、具名slot)
2019/10/15 Javascript
python类参数self使用示例
2014/02/17 Python
详解Python中break语句的用法
2015/05/14 Python
自己使用总结Python程序代码片段
2015/06/02 Python
Python中列表list以及list与数组array的相互转换实现方法
2017/09/22 Python
使用opencv将视频帧转成图片输出
2019/12/10 Python
Python urllib2运行过程原理解析
2020/06/04 Python
利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)
2020/09/04 Python
Pyinstaller打包Scrapy项目的实现步骤
2020/09/22 Python
让IE6支持css3,让 IE7、IE8 都支持CSS3
2011/10/09 HTML / CSS
HTML5 LocalStorage 本地存储详细概括(多图)
2017/08/18 HTML / CSS
香奈儿美国官网:CHANEL美国
2020/05/20 全球购物
JPA的优势都有哪些
2013/07/04 面试题
饲料采购员岗位职责
2013/12/19 职场文书
《桃花心木》教学反思
2014/02/17 职场文书
大专生自我鉴定怎么写
2014/09/16 职场文书
水电施工员岗位职责
2015/04/11 职场文书
学校会议通知范文
2015/04/15 职场文书
护理专业毕业自我鉴定
2019/08/12 职场文书
用python自动生成日历
2021/04/24 Python
Linux7.6二进制安装Mysql8.0.27详细操作步骤
2021/11/27 MySQL