节点 IPC 如何在 2 个进程之间工作
Posted
技术标签:
【中文标题】节点 IPC 如何在 2 个进程之间工作【英文标题】:How node IPC works between 2 processes 【发布时间】:2019-08-17 18:22:32 【问题描述】:使用 nodejs fork 可以在父进程和子进程之间进行 IPC。以前我的印象是子进程会有一个带有文件描述符的额外环境变量。我打印了进程环境,但我看不到任何带有文件 ID 的变量,我也没有看到任何打开的套接字,所以我的问题是节点 IPC 在幕后如何工作?
【问题讨论】:
如果您查看the source code,它看起来可能是一个命名管道。 进一步查看more of the code,似乎 libuv(node.js 使用的跨平台库)有一个Pipe abstraction,它是 Unix 上的域套接字和 Windows 上的命名管道。跨度> 【参考方案1】:所以我的问题是节点 IPC(用于分叉进程)如何在幕后工作
source code for fork 在内部使用 Pipe 对象。进一步查看 Pipe object,它是 libuv Pipe 对象的包装器。然后,查看libuv,它的 Pipe 抽象是 Unix 上的域套接字和 Windows 上的命名管道。
现在,由于这都是未记录的实现细节,因此没有任何内容表明它必须在未来始终以这种方式进行 - 尽管除非有一个非常好的理由,否则人们不会期望它会改变。
【讨论】:
那么它不应该出现在netstat -l
上还是应该出现一个套接字文件?让我感到困惑的是我没有看到那些(也许我忽略了)
@PauloLopes - 也许这会有所帮助:unix.stackexchange.com/questions/270544/…。如果您认为发生了其他事情,请随意浏览 node.js 源代码。我目前的位置没有 *nix 服务器(我假设是您要询问的平台)来亲自尝试。以上是关于节点 IPC 如何在 2 个进程之间工作的主要内容,如果未能解决你的问题,请参考以下文章