1.通过stdin/stdout等传递
spawn('ls', ['-l'], {stdio: 'inherit'})
2.IPC
// 父进程const cp = require('child_process');const n = cp.fork(`${__dirname}/sub.js`);n.on('message', (m) => {console.log('父进程收到消息', m);});// 使子进程输出: 子进程收到消息 { hello: 'world' }n.send({ hello: 'world' });//子进程process.on('message', (m) => {console.log('子进程收到消息', m);});// 使父进程输出: 父进程收到消息 { foo: 'bar', baz: null }process.send({ foo: 'bar', baz: NaN });
3.网络Sockets
借助网络完成进程通信,不仅能跨进程还能跨机器
// 父进程const { spawn } = require('child_process');const child = spawn('node', ['server/child'], {stdio: [null, null, null, 'pipe'],});child.stdio[3].on('data', data => {console.log('222', data.toString());});//子进程const net = require('net');const pipe = net.Socket({ fd: 3 });pipe.write('killme');
