nodejs之child_process子进程模块

child_process即子进程可以创建一个系统子进程并执行shell命令,在与系统层面的交互上挺有用处。

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 的结果是一样的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值