利用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中操作mysql数据库示例
Dec 20 NodeJs
使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
Aug 21 NodeJs
Nodejs中 npm常用命令详解
Jul 04 NodeJs
nodejs的HTML分析利器node-jquery用法浅析
Nov 08 NodeJs
初探nodeJS
Jan 24 NodeJs
nodejs入门教程三:调用内部和外部方法示例
Apr 24 NodeJs
NodeJs使用Mysql模块实现事务处理实例
May 31 NodeJs
Nodejs 和Session 原理及实战技巧小结
Aug 25 NodeJs
nodejs超出最大的调用栈错误问题
Dec 27 NodeJs
nodejs用gulp管理前端文件方法
Jun 24 NodeJs
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
Nov 01 NodeJs
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
Feb 02 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和ACCESS写聊天室(四)
2006/10/09 PHP
8个出色的WordPress SEO插件收集
2011/02/26 PHP
PHP轻量级数据库操作类Medoo增加、删除、修改、查询例子
2014/07/04 PHP
腾讯与新浪的通过IP地址获取当前地理位置(省份)的接口
2010/07/26 Javascript
Javascript设置对象的ReadOnly属性(示例代码)
2013/12/25 Javascript
jQuery 鼠标经过(hover)事件的延时处理示例
2014/04/14 Javascript
ajax提交表单实现网页无刷新注册示例
2014/05/08 Javascript
自写的jQuery异步加载数据添加事件
2014/05/15 Javascript
JQuery中的事件及动画用法实例
2015/01/26 Javascript
JS实现带关闭功能的阿里妈妈网站顶部滑出banner工具条代码
2015/09/17 Javascript
微信小程序使用第三方库Underscore.js步骤详解
2016/09/27 Javascript
在Vue组件化中利用axios处理ajax请求的使用方法
2017/08/25 Javascript
vue.js实现简单轮播图效果
2017/10/10 Javascript
vue实现前进刷新后退不刷新效果
2018/01/26 Javascript
jQuery+koa2实现简单的Ajax请求的示例
2018/03/06 jQuery
jQuery创建及操作xml格式数据示例
2018/05/26 jQuery
JS栈stack类的实现与使用方法示例
2019/01/31 Javascript
js实现单元格拖拽效果
2020/02/10 Javascript
vue添加自定义右键菜单的完整实例
2020/12/08 Vue.js
python网络编程示例(客户端与服务端)
2014/04/24 Python
Python机器学习之scikit-learn库中KNN算法的封装与使用方法
2018/12/14 Python
Python简单过滤字母和数字的方法小结
2019/01/09 Python
pymongo中group by的操作方法教程
2019/03/22 Python
详解Python函数式编程—高阶函数
2019/03/29 Python
Python获取时间范围内日期列表和周列表的函数
2019/08/05 Python
python3 dict ndarray 存成json,并保留原数据精度的实例
2019/12/06 Python
Python文本文件的合并操作方法代码实例
2020/03/31 Python
Python命令行参数定义及需要注意的地方
2020/11/30 Python
6种非常炫酷的CSS3按钮边框动画特效
2016/03/16 HTML / CSS
上海中网科技笔试题
2012/02/19 面试题
派出所正风肃纪剖析材料
2014/10/10 职场文书
2014年防汛工作总结
2014/12/08 职场文书
考试作弊检讨书
2015/01/27 职场文书
协议书范文
2015/01/27 职场文书
基于go interface{}==nil 的几种坑及原理分析
2021/04/24 Golang
试了下Golang实现try catch的方法
2021/07/01 Golang