在连接的节点上生成的进程获得相同的PID

Ant*_*n.P 2 erlang

我有4个erlang节点在多进程应用程序上一起工作.在我的订单中,一个进程是监视器,它在区域上绘制进程的位置,另外3个节点处理进程的位置和移动.在监视器上,当密钥是进程PID时,我使用ETS数据库存储位置,我注意到节点创建的进程具有相同的PID,这显然会中断整个系统的管理.

我试图将进程连接到:

net_adm:ping(...).
net_kernel:connect(...).
Run Code Online (Sandbox Code Playgroud)

希望当节点彼此意识到时,他们会给出不同的PID,但是没有用.

leg*_*cia 6

PID可以打印相同,例如<0.42.0>,但这只是输出约定:本地节点上的PID打印有第一个数字0.如果您将此PID发送到另一个节点并在那里打印,它将被打印为<2265.42.0>或类似.PID始终与运行进程的节点的名称相关联,您可以使用它来提取它node(Pid).因此,来自不同节点的PID永远不会相等.

这个答案详细介绍了PID的结构.