首页 > Web开发 > 详细

nodejs多进程spawn execFile exec fok方法的区别

时间:2020-05-01 18:19:01      阅读:111      评论:0      收藏:0      [点我收藏+]

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,它们的调用关系如下:

技术分享图片

nodejs多进程spawn execFile exec fok方法的区别

原文:https://www.cnblogs.com/mengff/p/12813977.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!