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 的結果是一樣的。