child_process 创建子进程,把任务分配给子进程处理

  1. // parent.js
  2. const process = require('child_process')
  3. const child_process = process.fork(__dirname, './index.js')
  4. child_process.send('change')
  5. child_process.on('message', str => {
  6. console.log('parent', str)
  7. })
  8. // child.js
  9. process.on('message', str => {
  10. process.send('change', str)
  11. })

exec创建子进程

exec 和 spawn都可以创建子进程
却别:
exec [ɪɡˈzek]
将进程的结果缓存,并将结果返回给回调函数

  1. const {exec, spawn } = require('child_process')
  2. exec('cat a.js', readFile)
  3. function readFile(err, stdout, stderr) {
  4. if(error) {
  5. console.log('read a.js error');
  6. return;
  7. }
  8. console.log('stdout', stdout)
  9. console.log('stderr', stderr)
  10. }

spawn创建子进程

spawn [spɔːn]
返回的是 strim流

  1. const { spawn } = require('child_process')
  2. const ls = spawn('ls', ['-a'], {encoding: 'utf8'});
  3. ls.stdout.on('data', data => {
  4. console.log('stdout', data)
  5. })
  6. ls.stderr.on('data', data => {
  7. console.log('stderr', stderr)
  8. })
  9. // 关闭流
  10. ls.on('close', code => {
  11. console.log('close', code)
  12. })

workder threads

工作线程