1.通过stdin/stdout等传递

    1. spawn('ls', ['-l'], {
    2. stdio: 'inherit'
    3. })

    2.IPC

    1. // 父进程
    2. const cp = require('child_process');
    3. const n = cp.fork(`${__dirname}/sub.js`);
    4. n.on('message', (m) => {
    5. console.log('父进程收到消息', m);
    6. });
    7. // 使子进程输出: 子进程收到消息 { hello: 'world' }
    8. n.send({ hello: 'world' });
    9. //子进程
    10. process.on('message', (m) => {
    11. console.log('子进程收到消息', m);
    12. });
    13. // 使父进程输出: 父进程收到消息 { foo: 'bar', baz: null }
    14. process.send({ foo: 'bar', baz: NaN });

    3.网络Sockets
    借助网络完成进程通信,不仅能跨进程还能跨机器

    1. // 父进程
    2. const { spawn } = require('child_process');
    3. const child = spawn('node', ['server/child'], {
    4. stdio: [null, null, null, 'pipe'],
    5. });
    6. child.stdio[3].on('data', data => {
    7. console.log('222', data.toString());
    8. });
    9. //子进程
    10. const net = require('net');
    11. const pipe = net.Socket({ fd: 3 });
    12. pipe.write('killme');