利用NodeJS的子進程(child_process)調(diào)用系統(tǒng)命令的方法分享
NodeJS子進程簡介 NodeJS子進程提供了與系統(tǒng)交互的重要接口,其主要API有: 標準輸入、標準輸出及標準錯誤輸出的接口。
NodeJS子進程簡介
NodeJS 子進程提供了與系統(tǒng)交互的重要接口,其主要 API 有:
標準輸入、標準輸出及標準錯誤輸出的接口
child.stdin 獲取標準輸入
child.stdout 獲取標準輸出
child.stderr 獲取標準錯誤輸出
獲取子進程的PID:child.pid
提供生成子進程的重要方法:child_process.spawn(cmd, args=[], [options])
提供直接執(zhí)行系統(tǒng)命令的重要方法:child_process.exec(cmd, [options], callback)
提供終止進程的方法:child.kill(signal='SIGTERM')
實例一:利用子進程獲取系統(tǒng)內(nèi)存使用情況
將以下代碼保存為 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);
});
// 注冊子進程關(guān)閉事件
free.on('exit', function (code, signal) {
console.log('子進程已退出,代碼:' + code);
});
執(zhí)行代碼后的結(jié)果:
$ 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
以上輸出相當與在命令行執(zhí)行:free -m 命令。
通過這個簡單的例子我們已經(jīng)對子進程的使用有所了解,下面再來一個示例,用于演示exec 的使用方法。
實例二:利用子進程統(tǒng)計系統(tǒng)登錄次數(shù)
將下面代碼保存為 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('子進程已關(guān)閉,代碼:' + code);
});
執(zhí)行代碼:
$ node last.js
標準輸出:203
子進程已關(guān)閉,代碼:0
其與直接在命令行輸入:last | wc -l 的結(jié)果是一樣的。
相關(guān)文章
一篇了解JSON與數(shù)據(jù)存儲基礎(chǔ)知識
這篇文章主要介紹了JSON與數(shù)據(jù)存儲基礎(chǔ)知識,本篇文章較為基礎(chǔ),但非常詳細,可以很好的理解JSON和數(shù)據(jù)存儲,,需要的朋友可以參考下2023-01-01
nodejs教程 安裝express及配置app.js文件的詳細步驟
express.js是nodejs的一個MVC開發(fā)框架,并且支持jade等多種模板。下面簡單來說說express的安裝和app.js文件的配置,然后在今后的教程中一步一步使用express.js搭建個聊天室2013-05-05
詳解Java中String JSONObject JSONArray List<實體類>轉(zhuǎn)換
這篇文章主要介紹了詳解String JSONObject JSONArray List<實體類>轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11
比較詳細的關(guān)于javascript 解析json的代碼
JSON (JavaScript Object Notation)一種簡單的數(shù)據(jù)格式,比xml更輕巧。 JSON 是 JavaScript 原生格式,這意味著在 JavaScript 中處理 JSON 數(shù)據(jù)不需要任何特殊的 API 或工具包。2009-12-12
JS中JSON.parse(JSON.stringify())實現(xiàn)深拷貝
深拷貝就是完全拷貝一份新的對象,本文主要介紹了JS中JSON.parse(JSON.stringify())實現(xiàn)深拷貝,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-08-08

