Erlangでrpc
@kuenishiさんからrpc:callを教えてもらった.
次のようなファイルを用意して,
-module(rpcserver). -export([testcall/0]). testcall() -> io:format("remote calling", []), okay.
一つのTerminalで実行
~/Documents/.../Erlang/rpc $ erl -sname fuga Erlang R14A (erts-5.8) [source] [64-bit] [smp:4:4] [rq:4] [async-threads:0] [hipe] [kernel-poll:false] Eshell V5.8 (abort with ^G) (fuga@SuzBookPro)1> c(rpcserver). {ok,rpcserver}
別のTerminalでrpc:callでNodeを指定してこの関数を実行できる.
(tako@SuzBookPro)2> rpc:call(fuga@SuzBookPro, rpcserver, testcall, []). remote callingokay
io:formatの出力結果が呼び出し側で表示されるのがミソ?
更にerlangモジュールのmemory関数をrpcしてみるとこんなかんじ
(tako@SuzBookPro)3> rpc:call(fuga@SuzBookPro, erlang, memory, []). [{total,9551720}, {processes,874872}, {processes_used,868264}, {system,8676848}, {atom,619969}, {atom_used,594139}, {binary,58744}, {code,5966812}, {ets,302640}]