child_process 创建子进程,把任务分配给子进程处理
// parent.js
const process = require('child_process')
const child_process = process.fork(__dirname, './index.js')
child_process.send('change')
child_process.on('message', str => {
console.log('parent', str)
})
// child.js
process.on('message', str => {
process.send('change', str)
})
exec创建子进程
exec 和 spawn都可以创建子进程
却别:
exec [ɪɡˈzek]
将进程的结果缓存,并将结果返回给回调函数
const {exec, spawn } = require('child_process')
exec('cat a.js', readFile)
function readFile(err, stdout, stderr) {
if(error) {
console.log('read a.js error');
return;
}
console.log('stdout', stdout)
console.log('stderr', stderr)
}
spawn创建子进程
spawn [spɔːn]
返回的是 strim流
const { spawn } = require('child_process')
const ls = spawn('ls', ['-a'], {encoding: 'utf8'});
ls.stdout.on('data', data => {
console.log('stdout', data)
})
ls.stderr.on('data', data => {
console.log('stderr', stderr)
})
// 关闭流
ls.on('close', code => {
console.log('close', code)
})
workder threads
工作线程