利用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 07 NodeJs
轻松创建nodejs服务器(10):处理上传图片
Dec 18 NodeJs
NodeJS中的MongoDB快速入门详细教程
Nov 11 NodeJs
详解nodejs 文本操作模块-fs模块(一)
Dec 22 NodeJs
windows 下安装nodejs 环境变量设置
Feb 02 NodeJs
nodejs 终端打印进度条实例代码
Apr 22 NodeJs
nodejs简单实现TCP服务器端和客户端的聊天功能示例
Jan 04 NodeJs
nodejs中Express与Koa2对比分析
Feb 06 NodeJs
nodejs多版本管理总结
Apr 03 NodeJs
nodejs基础之多进程实例详解
Dec 27 NodeJs
nodeJs项目在阿里云的简单部署
Nov 27 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抽象类 介绍
2012/06/13 PHP
laravel 获取某个查询的查询SQL语句方法
2019/10/12 PHP
js类中的公有变量和私有变量
2008/07/24 Javascript
javascript向flash swf文件传递参数值注意细节
2012/12/11 Javascript
JQUERY 实现窗口滚动搜索框停靠效果(类似滚动停靠)
2013/03/27 Javascript
如何设置iframe高度自适应在跨域情况下的可用方法
2013/09/06 Javascript
jquery隐藏标签和显示标签的实例
2013/11/11 Javascript
JS将数字转换成三位逗号分隔的样式(示例代码)
2014/02/19 Javascript
js键盘事件的keyCode
2014/07/29 Javascript
ES6中Math对象的部分扩展
2017/02/20 Javascript
angularjs之$timeout指令详解
2017/06/13 Javascript
详解VueRouter进阶之导航钩子和路由元信息
2017/09/13 Javascript
Vue cli+mui 区域滚动的实例代码
2018/01/25 Javascript
jquery.picsign图片标注组件实例详解
2018/02/02 jQuery
利用js实现前后台传送Json的示例代码
2018/03/29 Javascript
20个最常见的jQuery面试问题及答案
2018/05/23 jQuery
详解小程序rich-text对富文本支持方案
2018/11/28 Javascript
vue el-tree 默认展开第一个节点的实现代码
2020/05/15 Javascript
vue3+typescript实现图片懒加载插件
2020/10/26 Javascript
Python编程pygame模块实现移动的小车示例代码
2018/01/03 Python
python3在同一行内输入n个数并用列表保存的例子
2019/07/20 Python
django 中的聚合函数,分组函数,F 查询,Q查询
2019/07/25 Python
Python安装与卸载流程详细步骤(图解)
2020/02/20 Python
关于HTML5的22个初级技巧(图文教程)
2012/06/21 HTML / CSS
销售所有的狗狗产品:Dog.com
2016/10/13 全球购物
女子锻炼服装和瑜伽服装:Splits59
2019/03/04 全球购物
Groupon法国官方网站:特卖和网上购物高达-70%
2019/09/02 全球购物
银行会计职员个人的自我评价
2013/09/29 职场文书
销售经理工作职责范文
2013/12/03 职场文书
学校门卫岗位职责
2014/03/16 职场文书
《东方明珠》教学反思
2014/04/20 职场文书
2015年电工工作总结
2015/04/10 职场文书
2015年实习生工作总结报告
2015/04/28 职场文书
Go遍历struct,map,slice的实现
2021/06/13 Golang
springboot 启动如何排除某些bean的注入
2021/08/02 Java/Android
CSS控制继承中的height能变为可继承吗
2022/06/10 HTML / CSS