我知道不支持在 C 节点上监视“进程”,但是如果我尝试为源自 Erlang 节点上的 C 节点的 pid 调用链接,我的 C 节点首先会收到一条ERL_LINK
消息,然后过一会儿会收到一条ERL_EXIT
消息因为显然链接的 Erlang 进程崩溃了。
可能是因为我的 C 节点没有响应ERL_LINK
并且 Erlang 确定我的 C 节点“进程”已经死亡。
我想知道这是否被支持?以及 C 节点需要如何处理ERL_LINK
消息才能使其工作。
我知道不支持在 C 节点上监视“进程”,但是如果我尝试为源自 Erlang 节点上的 C 节点的 pid 调用链接,我的 C 节点首先会收到一条ERL_LINK
消息,然后过一会儿会收到一条ERL_EXIT
消息因为显然链接的 Erlang 进程崩溃了。
可能是因为我的 C 节点没有响应ERL_LINK
并且 Erlang 确定我的 C 节点“进程”已经死亡。
我想知道这是否被支持?以及 C 节点需要如何处理ERL_LINK
消息才能使其工作。
好消息:
其实很简单。由于我的 C 节点没有处理 ERL_LINK 消息,我认为链接的 Erlang 进程死亡似乎是我犯了一个错误。
如果 Erlang 节点链接到源自它的“pid”,则 C 节点不必做任何事情。一旦调用链接,C 节点将收到一条 ERL_LINK 消息,其中 from/to 填充了适当的 pid。如果 Erlang 进程死亡,它将收到 ERL_EXIT 消息。它的内容将是任何 Erlang 术语指定为 EXIT 消息的原因。如果 C 节点死亡/断开连接,则链接的 Erlang 进程将获得适当的 EXIT 消息。
坏消息:
erl_interface 不支持 C 节点将 ERL_EXIT 或 ERL_LINK 发送回 Erlang。似乎在某个时候考虑过它,但代码留在了一个名为“not_used”的文件夹中