为啥Node父进程使用子进程on message事件来处理子进程发送的消息

Posted

技术标签:

【中文标题】为啥Node父进程使用子进程on message事件来处理子进程发送的消息【英文标题】:Why does Node parent process use the subprocess on message event to handle messages sent by child process为什么Node父进程使用子进程on message事件来处理子进程发送的消息 【发布时间】:2020-07-13 01:49:12 【问题描述】:

这是来自 nodejs 文档的示例。

父.js

const cp = require('child_process');
const n = cp.fork(`$__dirname/sub.js`);

n.on('message', (m) => 
  console.log('PARENT got message:', m);
); // Why use n the subprocess here????

// Causes the child to print: CHILD got message:  hello: 'world' 
n.send( hello: 'world' );

child.js

process.on('message', (m) => 
  console.log('CHILD got message:', m);
);

// Causes the parent to print: PARENT got message:  foo: 'bar', baz: null 
process.send( foo: 'bar', baz: NaN );

我可以理解子进程使用process.on('message'...)process.send(..)来接收和发送消息给父进程。

但是为什么父进程要使用子进程的一个实例来接收来自子进程n.on('message'....)的消息。应该像子进程一样是process.on('message'...)吗?

谢谢。

【问题讨论】:

【参考方案1】:

父母会和很多孩子交流。而孩子将与一位家长交流。

【讨论】:

谢谢。只是这个API不是很直观。

以上是关于为啥Node父进程使用子进程on message事件来处理子进程发送的消息的主要内容,如果未能解决你的问题,请参考以下文章

如何在 node.js 子进程模块中将消息和标准输出从子进程传递给父进程?

POSIX 信号量:为啥父进程在子进程释放信号量之前获取信号量?

为啥我通过 spawn() 创建的 Node 子进程挂起?

为啥在调用 c++ fork 函数之前创建的值没有被父进程和子进程修改两次?

关于linux进程间的close-on-exec机制

子进程stdin没有得到数据,由父进程发送