8

5.4ドキュメントの分散プログラミングチュートリアルで遊んでいますが、ノード名に問題があります。

私のMacBookのデフォルト名(jamess-macbook)は、ダッシュのためにErlangのノード命名スキームではうまく機能しません:

(salt@jamess-macbook)4> {my_process, pepper@jamess-macbook} ! start
** exception error: bad argument in an arithmetic expression
     in operator  -/2
        called as pepper@jamess - macbook

Erlangを実行したいすべてのマシンの名前を変更する以外に、これを回避する簡単な方法があると確信していますが、ドキュメントには表示されません。

助言がありますか?

4

2 に答える 2

14

アトムを適切に引用するだけです。'pepper@jamess-macbook'(一重引用符付き) はノードの名前です。

アトムが小文字で始まらない場合、または英数字、アンダースコア (_)、または @ 以外の文字を含む場合は、アトムをシングル クォーテーション (') で囲む必要があります。-- Erlang リファレンス マニュアル

短いノード名 ( -sname) を使用すると、他のさまざまな結果が生じます (長いノード名のノードとの相互運用性が制限される、dns 情報が inet_db にロードされないなど)。

于 2009-01-05T18:30:42.447 に答える
4

Erlang インタープリターを次のように起動します。

$ erl -sname node_name

node_name、マシンを参照するために使用する名前です。

インタープリターの複数のインスタンスをそれぞれ異なるノード名で開始することにより、1 台のマシンで分散システムをシミュレートすることもできます。

于 2009-01-05T16:59:14.330 に答える