使用spawn而不是fork来设置IPC

问题描述 投票:0回答:1

父节点进程和子节点进程之间默认设置使用此IPC:

const cp = require('child_process');
const k = cp.fork(childPath);

我可以向子进程发送消息:

k.send('foobar');

并收到回复消息:

k.on('message', m => console.log('received a message from child:',m));

但是,我的问题是 - 有没有办法使用 cp.spawn 而不是 cp.fork 来设置带有 node.js 子进程的 IPC?

javascript node.js ipc child-process
1个回答
1
投票

当您使用

EventEmitter
时,没有内置方法可以使用
spawn
框架将消息传递给子进程。

请参阅以下官方文档中的片段

child_process.fork() 方法是 child_process.spawn() 的一个特例,专门用于生成新的 Node.js 进程。与 child_process.spawn() 一样,返回一个 ChildProcess 对象。返回的 ChildProcess 将具有一个附加的内置通信通道,允许消息在父进程和子进程之间来回传递。有关详细信息,请参阅 subprocess.send() 。

这可能是一个选项,可以在

spawn
上进行自定义包装,以“增强”其使用 EventEmitter 的能力,但我不明白为什么人们不直接使用
fork
,因为它是预期用途-大小写代替。

© www.soinside.com 2019 - 2024. All rights reserved.