nodejs几种创建子进程的区别

  • 2020 年 1 月 14 日
  • 筆記

spawn()

启动一个子进程来执行命令。进程类型任意

const { spawn } = require('child_process');  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(`子进程退出码:${code}`);  });

exec()

启动一个子进程来执行命令,但可以有一个回调函数获取子进程的一些情况。可以设置超时时间。进程类型任意

// 就像平时使用命令行那样  const { exec } = require('child_process');  exec('cat *.js bad_file | wc -l', (error, stdout, stderr) => {    if (error) {      console.error(`exec error: ${error}`);      return;    }    console.log(`stdout: ${stdout}`);    console.log(`stderr: ${stderr}`);  });

execFile()

启动一个子进程来执行可执行文件,可以设置超时时间,进程类型任意

const { execFile } = require('child_process');  const child = execFile('node', ['--version'], (error, stdout, stderr) => {    if (error) {      throw error;    }    console.log(stdout);  });

fork()

直接fork js文件。进程类型node

node文档的一些说明