您的位置:首页 > Web前端 > Node.js

利用NodeJS的子进程(child_process)调用系统命令

2017-01-22 17:25 465 查看
本文转载至:http://blog.csdn.net/ei__nino/article/details/37513507


child_process即子进程可以创建一个系统子进程并执行shell命令,在与系统层面的交互上挺有用处。 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 
的结果是一样的。

来源:http://www.csser.com/board/4f3f516e38a5ebc97800050c

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐