麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久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 主站蜘蛛池模板: 亚洲视频在线观看免费视频 | 三人弄娇妻高潮3p视频 | 欧美成人高清视频 | 4p嗯啊巨肉寝室调教男男视频 | 精品国产一区二区久久 | 国产欧美精品一区二区三区四区 | 日本精品视频一区二区三区四区 | 91资源在线观看 | 亚洲草逼视频 | 欧美性生活视频免费看 | h视频在线播放 | 黄色香蕉视频 | 国产伦久视频免费观看视频 | 中文字幕在线免费看 | 韩毛片| 精品亚洲一 | 日日操夜夜透 | 免费国产视频在线观看 | 亚洲电影在线播放 | 一区二区三视频 | 国产好片无限资源 | 中文字幕精品一二三四五六七八 | 电影av在线 | 欧美成人免费电影 | 欧美激情精品久久久久久久久久 | 精品亚洲一| 久草在线手机视频 | 免费a视频在线观看 | 99最新网址| 亚洲精品久久久久久久久久 | 免费一级片网站 | 午夜视频亚洲 | 曰本三级日本三级日本三级 | 九九视频在线观看6 | 性大片1000免费看 | 一级做a爱片久久 | 午夜久久久精品一区二区三区 | 久久久成人动漫 | 日本精品网 | av人人| 免费黄网站在线播放 |