国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

Node.js中創建和管理外部進程詳解

2019-11-20 14:16:02
字體:
來源:轉載
供稿:網友

Node被設計用來高效的處理I/O操作,但是你應該知道,有些類型的程序并不適合這種模式。比如,如果你打算用Node處理一個CPU密集的任務,你可能會堵塞事件循環,并因此降低了程序的響應。替代辦法是,把CPU密集的任務分配給一個單獨的進程來處理,從而釋放事件循環。Node允許你產生進程,并把這個新進程做為它父進程的子進程。在Node里,子進程可以和父進程進行雙向通信,而且在某種程度上,父進程還可以監控和管理子進程。

另外一種需要使用子進程的情況是,當你想簡單地執行一個外部命令,并讓Node獲取命令的返回值時。比如,你可以執行一個UNIX命令、腳本或者其他那些不能在Node里直接執行的命令。

本章將向你展示如何執行外部命令,創建,并和子進程通信,以及終結子進程。重點是讓你了解如何在Node進程外完成一系列任務。

執行外部命令

當你需要執行一個外部shell命令或可執行文件時,你可以使用child_process模塊,像這樣導入它:

復制代碼 代碼如下:

var child_process = require(‘child_process')

然后可以用模塊內的exec函數來執行外部命令:
復制代碼 代碼如下:

var exec = child_process.exec;

exec(command,callback);


exec的第一個參數是你準備執行的shell命令字符串,第二個參數是一個回調函數。這個回調函數將會在exec執行完外部命令或者有錯誤發生時被調用。回調函數有三個參數:error,stdout,stderr,看下面的例子:
復制代碼 代碼如下:

exec(‘ls',function(err,stdout,stderr){

         //譯者注:如果使用windows,可改為windows命令,比如dir,后面不再贅述

});

如果有錯誤發生,第一個參數將會是一個Error類的實例,如果第一個參數不包含錯誤,那么第二個參數stdout將會包含命令的標準輸出。最后一個參數包含命令相關的錯誤輸出。

列表8-1 展示了一個復雜些的執行外部命令的例子

LISTING 8-1:執行外部命令(源碼:chapter8/01_external_command.js)

復制代碼 代碼如下:

//導入child_process模塊的exec函數
var exec = require(‘child_process').exec;
//調用“cat *.js | wc -l”命令
exec(‘cat *.js | wc 主站蜘蛛池模板: 安龙县| 双城市| 红河县| 任丘市| 嘉鱼县| 桓台县| 哈密市| 昌图县| 永年县| 永和县| 胶州市| 钦州市| 秦皇岛市| 监利县| 郴州市| 修武县| 芦山县| 正阳县| 富源县| 长白| 白水县| 绩溪县| 浮山县| 金湖县| 呈贡县| 呼玛县| 垦利县| 甘肃省| 讷河市| 手机| 闻喜县| 锡林郭勒盟| 辽阳市| 武强县| 永年县| 常山县| 项城市| 邮箱| 乾安县| 新兴县| 望谟县|