利用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教程之制作一个简单的文章发布系统
Nov 21 NodeJs
详谈nodejs异步编程
Dec 04 NodeJs
NodeJS学习笔记之(Url,QueryString,Path)模块
Jan 13 NodeJs
nodejs简单实现中英文翻译
May 04 NodeJs
NodeJs读取JSON文件格式化时的注意事项
Sep 25 NodeJs
NodeJs下的测试框架Mocha的简单介绍
Feb 22 NodeJs
nodejs取得当前执行路径的方法
May 13 NodeJs
基于nodejs res.end和res.send的区别
May 14 NodeJs
nodejs基础之多进程实例详解
Dec 27 NodeJs
nodejs一个简单的文件服务器的创建方法
Sep 13 NodeJs
详解NodeJs项目 CentOs linux服务器线上部署
Sep 16 NodeJs
NodeJs内存占用过高的排查实战记录
May 10 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中获取文件扩展名的N种方法小结
2012/02/27 PHP
php防止恶意刷新与刷票的方法
2014/11/21 PHP
PHP 并发场景的几种解决方案
2019/06/14 PHP
用js模拟JQuery的show与hide动画函数代码
2010/09/20 Javascript
jquery关于图形报表的运用实现代码
2011/01/06 Javascript
改善用户体验的五款jQuery插件分享
2011/05/22 Javascript
兼容所有浏览器的js复制插件Zero使用介绍
2014/03/19 Javascript
jQuery常用且重要方法汇总
2015/07/13 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
js贪吃蛇游戏实现思路和源码
2016/04/14 Javascript
bootstrap datetimepicker日期插件超详细使用方法介绍
2017/02/23 Javascript
微信小程序之购物车功能
2020/09/23 Javascript
jquery版轮播图效果和extend扩展
2017/07/18 jQuery
vue2实现可复用的轮播图carousel组件详解
2017/11/27 Javascript
解决layui中onchange失效以及form动态渲染失效的问题
2019/09/27 Javascript
js通过循环多张图片实现动画效果
2019/12/19 Javascript
[01:43]倾听DOTA2英雄之声 魅惑魔女国服配音鉴赏
2013/06/06 DOTA
[16:56]教你分分钟做大人:司夜刺客
2014/10/30 DOTA
[01:10:57]Liquid vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python正则表达式判断字符串是否是全部小写示例
2013/12/25 Python
python字典的常用操作方法小结
2016/05/16 Python
解决pycharm界面不能显示中文的问题
2018/05/23 Python
python2和python3的输入和输出区别介绍
2018/11/20 Python
python匹配两个短语之间的字符实例
2018/12/25 Python
Python设计模式之建造者模式实例详解
2019/01/17 Python
Python脚本修改阿里云的访问控制列表的方法
2019/03/08 Python
Kears+Opencv实现简单人脸识别
2019/08/28 Python
PyTorch学习:动态图和静态图的例子
2020/01/06 Python
css3 旋转按钮 使用CSS3创建一个旋转可变色按钮
2012/12/31 HTML / CSS
CSS3利用text-shadow属性实现多种效果的文字样式展现方法
2016/08/25 HTML / CSS
全球最大的户外用品零售商之一:The House
2018/06/12 全球购物
售后服务承诺函格式
2015/01/21 职场文书
小学教师个人工作总结2015
2015/04/20 职场文书
Nginx进程调度问题详解
2021/09/25 Servers
Vue2.0搭建脚手架
2022/03/13 Vue.js
CSS元素定位之通过元素的标签或者元素的id、class属性定位详解
2022/09/23 HTML / CSS