在 Erlang C 节点中实现进程链接

Implementing process linking in an Erlang C node

我知道不支持在 C 节点上监视 "process",但是如果我尝试调用 link 来获取来自 Erlang 节点上的 C 节点的 pid,我的 C 节点首先收到 ERL_LINK 消息,然后几分钟后收到 ERL_EXIT 消息,因为显然 linked Erlang 进程崩溃了。

可能是因为我的 C 节点没有响应 ERL_LINK 并且 Erlang 确定我的 C 节点 "process" 已经死了。

我想知道这是否完全受支持?以及 C 节点需要如何处理 ERL_LINK 消息才能使其正常工作。

好消息:

其实很简单。似乎我在认为 linked Erlang 进程死亡时犯了一个错误,因为我的 C 节点没有处理 ERL_LINK 消息。

如果 Erlang 节点 link 到 "pid" 来自它的 "pid",C 节点不需要做任何事情。 一旦 link 被调用,C 节点将收到一条 ERL_LINK 消息,其中 from/to 填写了适当的 pid。 如果 Erlang 进程死亡,它将收到一条 ERL_EXIT 消息。其内容将是任何 Erlang 术语指定为退出消息的原因。如果 C 节点 dies/looses 连接,那么 linked Erlang 进程将获得适当的 EXIT 消息。

坏消息:

erl_interface 中不支持 C 节点将 ERL_EXIT 或 ERL_LINK 发送回 Erlang。似乎在某个时候考虑过,但代码留在名为 "not_used"

的文件夹中