node.js(七) 子進程 child_process模塊


眾所周知node.js是基於單線程模型架構,這樣的設計可以帶來高效的CPU利用率,但是無法卻利用多個核心的CPU,為了解決這個問題,node.js提供了child_process模塊,通過多進程來實現對多核CPU的利用. child_process模塊提供了四個創建子進程的函數,分別是spawn,exec,execFile和fork。

 

1.spawn函數的簡單用法

spawn函數用給定的命令發布一個子進程,只能運行指定的程序,參數需要在列表中給出。如下示例:

  1. var child_process = require('child_process');
  2. var child = child_process.spawn( command );
  3. child.stdout.on('data', function(data) {
  4. console.log(data);
  5. });

通過執行命令得到返回結果,我們就可以拿到標准輸出流數據了。

 

2.exec函數的簡單用法

exec也是一個創建子進程的函數,與spawn函數不同它可以直接接受一個回調函數作為參數,回調函數有三個參數,分別是err, stdout , stderr,基本使用方法如下:

  1. var child_process = require('child_process');
  2. child_process.exec( command , function(err, stdout , stderr ) {
  3. console.log( stdout );
  4. });

exec函數可以直接接受一個回調函數作為參數,回調函數有三個參數,分別是err, stdout,stderr,非常方便直接使用,

 

3.execFile函數的簡單用法

execFile函數與exec函數類似,但execFile函數更顯得精簡,因為它可以直接執行所指定的文件,基本使用方法如下:

  1. var child_process = require('child_process');
  2. child_process.execFile( file , function(err, stdout , stderr ) {
  3. console.log( stdout );
  4. });

execFile與spawn的參數相似,也需要分別指定執行的命令和參數,但可以接受一個回調函數,與exec的回調函數相同。

 

4.fork函數的簡單用法

fork函數可直接運行Node.js模塊,所以我們可以直接通過指定模塊路徑而直接進行操作。使用方法如下:

  1. var child_process = require('child_process');
  2. child_process.fork( modulePath );

該方法是spawn()的特殊情景,用於派生Node進程。除了普通ChildProcess實例所具有的所有方法,所返回的對象還具有內建的通訊通道。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM