利用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实现PHP的print_r函数代码
Mar 14 NodeJs
NodeJs中的VM模块详解
May 06 NodeJs
NodeJs的优势和适合开发的程序
Aug 14 NodeJs
nodejs个人博客开发第六步 数据分页
Apr 12 NodeJs
nodejs入门教程一:概念与用法简介
Apr 24 NodeJs
Nodejs进阶之服务端字符编解码和乱码处理
Sep 04 NodeJs
详解Nodejs内存治理
May 13 NodeJs
nodejs的路径问题的解决
Jun 30 NodeJs
NodeJS实现同步的方法
Mar 02 NodeJs
NodeJs 模仿SIP话机注册的方法
Jun 21 NodeJs
NodeJS开发人员常见五个错误理解
Oct 14 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
使用sockets:从新闻组中获取文章(一)
2006/10/09 PHP
防止MySQL注入或HTML表单滥用的PHP程序
2009/01/21 PHP
获取用户Ip地址通用方法与常见安全隐患(HTTP_X_FORWARDED_FOR)
2013/06/01 PHP
php 伪造ip以及url来路信息方法汇总
2014/11/25 PHP
PHP使用pear实现mail发送功能 windows环境下配置pear
2016/04/15 PHP
Yii框架组件和事件行为管理详解
2016/05/20 PHP
详解PHP中cookie和session的区别及cookie和session用法小结
2016/06/12 PHP
使用PHP访问RabbitMQ消息队列的方法示例
2018/06/06 PHP
RR vs IO BO3 第一场2.13
2021/03/10 DOTA
Javascript实例教程(19) 使用HoTMetal(4)
2006/12/23 Javascript
JQuery获取或设置ckeditor的数据(示例代码)
2013/11/15 Javascript
js单例模式详解实例
2013/11/21 Javascript
avalonjs实现仿微博的图片拖动特效
2015/05/06 Javascript
在Node.js应用中使用Redis的方法简介
2015/06/24 Javascript
js实现具有高亮显示效果的多级菜单代码
2015/09/01 Javascript
微信小程序 wx.request(object) API详解及实例代码
2016/09/30 Javascript
BootStrap便签页的简单应用
2017/01/06 Javascript
解决vue build打包之后首页白屏的问题
2018/03/06 Javascript
微信小程序引入Vant组件库过程解析
2019/08/06 Javascript
vue路由教程之静态路由
2019/09/03 Javascript
微信小程序webSocket的使用方法
2020/02/20 Javascript
python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
2013/12/06 Python
利用Python生成文件md5校验值函数的方法
2017/01/10 Python
Sanic框架请求与响应实例分析
2018/07/16 Python
python将控制台输出保存至文件的方法
2019/01/07 Python
对Django 转发和重定向的实例详解
2019/08/06 Python
python 绘制国旗的示例
2020/09/27 Python
CSS3 transforms应用于背景图像的解决方法
2019/04/16 HTML / CSS
旅游管理专业生自荐信范文
2014/01/02 职场文书
机关工会开展学习雷锋活动总结
2014/03/01 职场文书
党员自我剖析材料
2014/08/31 职场文书
主持稿开场白
2015/06/01 职场文书
2016年会领导致辞稿
2015/07/29 职场文书
2016高校自主招生自荐信范文
2016/01/28 职场文书
python爬取新闻门户网站的示例
2021/04/25 Python
解决sql server 数据库,sa用户被锁定的问题
2021/06/11 SQL Server