2017-02-19 73 views
1

我正在閱讀一個node.js項目,其中包含child_process庫。什麼是節點子進程?

子過程究竟是什麼?這是類似的JavaScript網絡工作者?

在子進程中運行進程而不是簡單地正常執行它有什麼好處?我假設這一些如何讓你更多地訪問內存?

回答

3

當你在Linux上運行(bash進程)終端,並執行一個命令,例如ls -lh /usr,終端開始一個子進程ls,寫入到stdout所有文件在當前目錄中。現在圖像,而不是一個終端,你有node.js作爲父進程。您可以生成/啓動子ls過程是這樣的:

const spawn = require('child_process').spawn; 
const ls = spawn('ls', ['-lh', '/usr']); 

ls.stdout.on('data', (data) => { 
    console.log(`stdout: ${data}`); 
}); 

ls.stderr.on('data', (data) => { 
    console.log(`stderr: ${data}`); 
}); 

ls.on('close', (code) => { 
    console.log(`child process exited with code ${code}`); 
}); 

這是類似於一個JavaScript的網絡工作者?

它可能類似於webworkers,但我不知道webworkers如何在瀏覽器下引擎實現。 AFAIK node沒有開箱即用的webworkers API。但是如果你的子進程是node.js進程,你可以查看這個子進程的東西類似於webworker。看看這個cluster API