利用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制作爬虫全过程
Dec 22 NodeJs
Nodejs学习笔记之入门篇
Apr 16 NodeJs
nodejs搭建本地服务器并访问文件的方法
Mar 03 NodeJs
nodejs个人博客开发第六步 数据分页
Apr 12 NodeJs
Nodejs 和Session 原理及实战技巧小结
Aug 25 NodeJs
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
Sep 06 NodeJs
nodejs 图解express+supervisor+ejs的用法(推荐)
Sep 08 NodeJs
nodejs实现爬取网站图片功能
Dec 14 NodeJs
nodejs基于WS模块实现WebSocket聊天功能的方法
Jan 12 NodeJs
NodeJS实现自定义流的方法
Aug 01 NodeJs
Nodejs对postgresql基本操作的封装方法
Feb 20 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
环境会对咖啡种植有什么影响
2021/03/03 咖啡文化
php学习笔记(三)操作符与控制结构
2011/08/06 PHP
php获取根域名方法汇总
2014/10/28 PHP
PHP asXML()函数讲解
2019/02/03 PHP
Laravel 前端资源配置教程
2019/10/18 PHP
js如何调用qq互联api实现第三方登录
2014/03/28 Javascript
javascript删除一个html元素节点的方法
2014/12/20 Javascript
jQuery对象的selector属性用法实例
2014/12/27 Javascript
在JavaScript中操作时间之getUTCDate()方法的使用
2015/06/10 Javascript
jQuery的bind()方法使用详解
2015/07/15 Javascript
多功能jQuery树插件zTree实现权限列表简单实例
2016/07/12 Javascript
详解微信小程序开发之——wx.showToast(OBJECT)的使用
2017/01/18 Javascript
详解在vue-cli项目中安装node-sass
2017/06/21 Javascript
新手简单了解vue
2019/05/29 Javascript
webpack 如何解析代码模块路径的实现
2019/09/04 Javascript
es6中Promise 对象基本功能与用法实例分析
2020/02/23 Javascript
解决Vue 给mapState中定义的属性赋值报错的问题
2020/06/22 Javascript
在vue中created、mounted等方法使用小结
2020/07/21 Javascript
Python调用C/C++动态链接库的方法详解
2014/07/22 Python
Python算法之求n个节点不同二叉树个数
2017/10/27 Python
python消费kafka数据批量插入到es的方法
2018/12/27 Python
Python实现Event回调机制的方法
2019/02/13 Python
opencv3/C++ 平面对象识别&透视变换方式
2019/12/11 Python
Python Socketserver实现FTP文件上传下载代码实例
2020/03/27 Python
Tensorflow中的降维函数tf.reduce_*使用总结
2020/04/20 Python
Python Pygame实现俄罗斯方块
2021/02/19 Python
如何利用cmp命令比较文件
2016/04/11 面试题
外贸主管求职简历的自我评价
2013/10/23 职场文书
办公室前台岗位职责范本
2013/12/10 职场文书
私用公车造成事故检讨书
2014/11/16 职场文书
经理岗位职责范本
2015/04/15 职场文书
工作态度恶劣检讨书
2015/05/06 职场文书
现实表现证明材料
2015/06/19 职场文书
2015大学生暑期实习报告
2015/07/13 职场文书
Linux中Nginx的防盗链和优化的实现代码
2021/06/20 Servers
Winsows11性能如何? win11性能测评多核竟比Win10差了10%
2021/11/21 数码科技