首頁 >web前端 >js教程 >利用NodeJS的子程序(child_process)呼叫系統指令的方法分享_json

利用NodeJS的子程序(child_process)呼叫系統指令的方法分享_json

WBOY
WBOY原創
2016-05-16 17:32:431445瀏覽

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('標準輸出: ' data);
});

// 捕獲標準錯誤輸出並將其列印到控制台
free.stderr.on('data', function (data) {
console.log('標準錯誤輸出: ' 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
-/ buffers/cache: 879 3070
已退出進程,程式碼: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 的結果是一樣的。
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn