Node.js 面试题
目录

如何实现父进程和子进程之间的通信?

· 约 3 分钟读完 · 第 34 / 377 章

推荐答案

在 Node.js 中,父进程和子进程之间的通信可以通过 child_process 模块来实现。具体来说,可以使用 fork() 方法创建子进程,并通过 send() 和 message 事件来实现进程间的通信。

父进程代码示例

子进程代码示例

本题详细解读

1. fork() 方法

fork() 是 child_process 模块中的一个方法,用于创建一个新的 Node.js 进程。与 spawn() 和 exec() 不同,fork() 专门用于创建 Node.js 子进程,并且会自动建立一个通信通道,使得父子进程可以通过 send() 和 message 事件进行通信。

2. send() 方法

send() 方法用于向子进程或父进程发送消息。消息可以是任何可序列化的 JavaScript 对象。在父进程中,send() 方法通过子进程对象调用;在子进程中,send() 方法通过 process 对象调用。

3. message 事件

message 事件用于接收来自另一个进程的消息。在父进程中,可以通过子进程对象监听 message 事件;在子进程中,可以通过 process 对象监听 message 事件。

4. 通信流程

  1. 父进程通过 fork() 创建子进程。
  2. 父进程通过 send() 方法向子进程发送消息。
  3. 子进程通过 process.on('message') 监听父进程的消息,并通过 process.send() 向父进程发送消息。
  4. 父进程通过 child.on('message') 监听子进程的消息。

通过这种方式,父进程和子进程可以实现双向通信,适用于需要多进程协作的场景。