Node.js几种创建子进程方法

exec
const { exec } = require('child_process')exec('cat *.js bad_file | wc -l')
exec('cat *.js bad_file | wc -l', (err, stdout, stderr) => {console.log(stdout)})
execFile
child_process.execFile(file[, args][, options][, callback])
const { execFile } = require('child_process')execFile('node', ['--version'], (err, stdout, stderr) => {console.log(stdout)})
fork
child_process.fork(modulePath[, args][, options])
silent
parent.jsconst { fork } = require('child_process')const fd = fork('./sub.js')fd.stdout.on('data', data => console.log(data))sub.jsconsole.log('this is sub process')
child_process.spawn(command[, args][, options])
父子进程间的通讯
ignore - 等同于 [ignore, ignore, ignore]
inherit - 等同于 [process.stdin, process.stdout, process.stderr] 或 [0,1,2]
const { spawn } = require('child_process');// 子进程使用父进程的 stdiosspawn('prg', [], { stdio: 'inherit' });// 衍生的子进程只共享 stderrspawn('prg', [], { stdio: ['pipe', 'pipe', process.stderr] });// 打开一个额外的 fd=4,用于与程序交互spawn('prg', [], { stdio: ['pipe', null, null, null, 'pipe'] });

评论
