2

C ノードでの「プロセス」の監視がサポートされていないことはわかっていますが、Erlang ノードで C ノードから発信された pid のリンクを呼び出そうとすると、C ノードは最初にERL_LINKメッセージを取得し、その後すぐにメッセージをERL_EXIT取得します。明らかに、リンクされた Erlang プロセスがクラッシュしたためです。

おそらく、C ノードが に応答せずERL_LINK、Erlang が C ノードの「プロセス」が終了したと判断したためです。

これがサポートされているかどうかを知りたいですか?ERL_LINKそして、これを機能させるために、Cノードはメッセージをどのように処理する必要がありますか.

4

1 に答える 1

1

良いニュース:

それは実際には非常に簡単です。C ノードが ERL_LINK メッセージを処理しなかったため、リンクされた Erlang プロセスが停止したと考えたのは間違いだったようです。

Erlang ノードがそこから発信された「pid」にリンクしている場合、C ノードは何もする必要はありません。リンクが呼び出されると、C ノードは from/to が適切な pid で埋められた ERL_LINK メッセージを取得します。Erlang プロセスが終了すると、ERL_EXIT メッセージが表示されます。その内容は、Reason for EXIT メッセージとして指定された Erlang 用語になります。C ノードが死んだり接続を失ったりした場合、リンクされた Erlang プロセスは適切な EXIT メッセージを受け取ります。

悪いニュース:

C ノードが ERL_EXIT または ERL_LINK を Erlang に送り返すための erl_interface のサポートはありません。一応検討されたようですが、「not_used」というフォルダにコードが残っています

于 2018-02-27T23:17:06.087 に答える