Node.js的fork后父子进程通信这种代码写法是不是有点别扭啊?

参考文章
https://zhuanlan.zhihu.com/p/...

问题:
1.父进程中,父给子发消息用的是 childProcess.send('来自主进程的消息')

正常清空下,对于子进程收到消息之后如何处理,应该可以在 父进程的文件中定义如何处理,也可以在子进程的文件中定义如何处理。

我的理解是 childProcess.on('message',handler) 用来定义 子进程收到消息后如何处理,主语是子进程对象。

而实际却是 在子进程的文件中使用父进程process对象来定义 子进程收到消息后如何处理

// 子进程接受父进程发送过来的消息
process.on('message', message => {

})

这个 怎么理解比较好?

2, 子进程的文件中 process对象表示的是父进程 对象。那么如何在子进程文件中获取当前的子进程对象本身?

阅读 1.8k
1 个回答

理解错误,子进程的文件中 process对象表示的是"当前进程",即子进程本身,不是表示父进程。另外你那个链接的代码demo错得离谱(根本说不上哪里是对的),正确演示代码如下:

parent.js

const child_process = require("child_process")
const child_process_handle = child_process.spawn('node', ['child.js'],{ stdio: ['inherit','inherit','inherit','ipc']})

// 父进程接受子进程发送过来的消息
child_process_handle.on('message', message => {
  console.log('父进程接受到了来自子进程的消息:', message)
})

child_process_handle.on('spawn', () => {
    child_process_handle.send("i am parent")
})


console.log("done")

child.js

// 子进程接受父进程发送过来的消息
process.on('message', message => {
    // 子进程向父进程发送消息
    console.log("子进程收到了父进程的message", message)
    process.send(`i am child`);
})

输出如下:
图片.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏