zoukankan      html  css  js  c++  java
  • 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,它们的调用关系如下:

  • 相关阅读:
    SAP 用户权限解剖
    效率极低人群的七大习惯你占了几项? 迎客
    数据库到底用不用外键 迎客
    办公室生存——与人相处的30个原则 迎客
    虚拟机 VirtualBox 迎客
    fancybox 迎客
    遥志代理服务器软件CCProxy 迎客
    JRE和JDK的区别 迎客
    小众软件 迎客
    网络推广方法汇集 迎客
  • 原文地址:https://www.cnblogs.com/mengff/p/12813977.html
Copyright © 2011-2022 走看看