私はErlang / OTPを学んでおり、第14章には次のように書かれています。
「シェルコマンドを使用して、モジュールをすべてのノードにロードできます:
command nl(Mod)
」。
知りたいのですが、どうすればいいですか?シェルコマンドが見つかりません:command nl(Mod)
。
help().
シェルを入力しようとしましたか?この関数は、stdlibのcモジュールで定義されています。しかし、シェルは理解しますnl(Mod).
テストを実行するには、少なくとも2つのerlang vmsを起動し、接続します。
erl -pa your_module_path -name [email protected]
erl -name [email protected]
最初のシェルで、次の方法で2番目のノードに接続します。
net_kernel:connect('[email protected]').
で応答する必要がありtrue
ます。
次のyour_module_path
ような単純なモジュールを作成します。
-module(nl_test).
-export([test/0]).
test() -> 1.
そして、で、それをコンパイルしc(nl_test).
、実行することができます今、nl_test:test()
最初のシェルからではなく、もう一つは、それをロードすることはできません。それをブロードキャストして強制的にロードするには、最初から実行しnl(nl_test).
ますnl_test:test()
。次に、2番目のシェルから試してください。
変更test() -> 1.
したtest() -> 2.
としましょう。実行するc(nl_test), nl(nl_test).
必要がnc(nl_test)
あるのは、実行するか短くすることだけです。つまり、同じことを意味します。
nl_test:test().
接続されているすべてのノードで2
。を返す必要があります。
これは非常に簡単に見えるかもしれませんが、複雑な本番システムでは、適切なホットローディングは非常に高度な問題です。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加