麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > 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 主站蜘蛛池模板: 欧美一级淫片免费视频黄 | 久久人人爽人人爽人人片av免费 | 欧美18xxxx| 成人一级黄色片 | 久久恋| 亚洲情视频 | 99影视电影电视剧在线播放 | 久色porn | 国产精品久久久久久久久久10秀 | h色网站在线观看 | 国产精品视频2021 | 亚洲午夜国产 | 日本成年免费网站 | 一区小视频 | 国产九色视频在线观看 | 在线成人免费观看www | 国产午夜精品久久久久婷 | 成人福利在线免费观看 | 一区二区三区在线观看免费视频 | 国产一区二区视频精品 | 精品国内视频 | 国产污污视频 | 87成人免费看片 | 毛片在线播放视频 | 91 免费看片| 国产成人av在线 | 国产精品久久久久久久久久大牛 | 欧美a级在线免费观看 | 好吊色欧美一区二区三区四区 | 久久精品色 | 成人免费视频视频在线观看 免费 | 欧美性生交大片 | japanese hot milf free av | 国内精品久久久久久久影视红豆 | 一区二区三区视频在线观看 | 久色精品视频 | 国产91在线免费 | 欧美成人视 | 李宗瑞国产福利视频一区 | 欧美激情第一区 | 久久亚洲国产精品 |