child_process是node一個比較重要的模塊,通過它可以實現創建多線程,來利用多核CPU。
這個模塊提供了四個創建子進程的函數。
spawn、exec、execFile、fork。
spawn是最原始的創建子進程的函數,剩下的三個是對這個函數不同程度的封裝。
spawn不支持回調函數。
fork只能執行js文件。例如fork('./child.js');
總結一下:當你想要從子進程返回大量數據時使用spawn,如果只是返回簡單的狀態信息,那么使用exec。
exec和execFile均支持回調函數。區別就是后者不用啟動獨立的shell,相對來說更加輕量級。我們拿execFile舉例說明(打開存放在固定位置的bat文件,執行文件的命令行)(親測通過):
1 var child_process = require('child_process'); 2 //調用執行文件 3 var openApp = function(){ 4 child_process.execFile('D:/testweb/1.bat',null,{cwd:'D:/'},function (error,stdout,stderr) { 5 if (error !== null) { 6 console.log('exec error: ' + error); 7 } 8 }); 9 } 10 11 openApp();
bat文件是個很好玩的東西,后面會有bat文件的博文。^_^
參考資料:
http://my.oschina.net/u/252343/blog/185998
https://www.byvoid.com/zhs/blog/node-child-process-ipc/
官方文檔:
http://nodejs.org/api/child_process.html