nodejs多進程spawn execFile exec fok方法的區別


1. spawn 創建新進程,執行結果已流的形式返回,只能通過事件來獲取結果數據,操作麻煩

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}`);
});

2. execFile 創建新進程,按照其后面的File名字,執行一個可執行文件,可以帶選項,以回調形式返回調用結果,可以得到完整數據,方便了很多

execFile('node', ['--version'], function(error, stdout, stderr){
    if(error){
        throw error;
    }
    console.log(stdout);
});

3. exec  創建新進程,可以直接執行shell命令,簡化了shell命令執行方式,同樣以回調方式返回

exec('ls -al', function(error, stdout, stderr){
    if(error) {
        console.error('error: ' + error);
        return;
    }
    console.log('stdout: ' + stdout);
    console.log('stderr: ' + typeof stderr);
});

4. fork  創建新進程,執行node程序

var child = child_process.fork('./anotherSilentChild.js', {
    silent: true
});

child.stdout.setEncoding('utf8');
child.stdout.on('data', function(data){
    console.log(data);
});

其中,spawn是所有方法的基礎,exec底層是調用了execFile,它們的調用關系如下:


免責聲明!

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



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