我有一个Java进程通过JInterface发送我的erlang gen_server消息。发送给我的消息包括在Java端创建的邮箱的Pid。 Pid是有效的,因为我可以将消息发送回该Pid,并且这些消息已成功存放在Javan端邮箱中。
但是,执行监视器(进程,Pid)会生成即时节点关闭消息(noproc)。
有没有办法监控这个Pid?
答案 0 :(得分:1)
Java邮箱发送退出信号并中断任何链接,但据我所知,它不支持监视器。所以你可以链接到它,只要小心,因为链接是双向的。
答案 1 :(得分:1)
Java(和C)节点与Erlang节点不同。它们是隐藏的,它们不会实现Erlang节点所做的一切。特别是,他们没有实现监视器支持。
Erlang Distribution Protocol记录了这一点:
11.7 distrvsn = 4(OTP R6)的新Ctrlmessages
这些只能由Erlang节点识别,而不能由隐藏节点识别。
MONITOR_P
...
OTP实现了一种监视回退机制,用于在这些节点上对(伪)-gen_servers执行调用。 comment具有启发性:
%% Node (C/Java?) is not supporting the monitor.
%% The other possible case -- this node is not distributed
%% -- should have been handled earlier.
%% Do the best possible with monitor_node/2.
%% This code may hang indefinitely if the Process
%% does not exist. It is only used for featureweak remote nodes.