這是一個在Erlang進行的雙進程通信程序。Erlang在兩臺計算機上進行兩個進程通信
我需要在不同的計算機上運行每個進程。
我需要運行 ERL -name平
在電腦2,其主機名是Linux-2.mydomain
而且,我需要運行
erl -name pong
IN電腦,其主機名是linux-1.mydomain
然後,
在電腦1,我運行:
tut17:start_pong().
電腦2,我跑:
tut17:start_ping([email protected])
但是,我得到了錯誤:算術表達式壞的說法:
- 異常錯誤 in operator -/2 稱爲pong @ linux - 1
似乎Erlang認爲「 - 」是「linux-1」中的負運算符。
那麼,如何讓Erlang瞭解我的命令呢?
任何幫助真的很感激。
的代碼如下:
-module(tut17).
-export([start_ping/1, start_pong/0, ping/2, pong/0]).
ping(0, Pong_Node) ->
{pong, Pong_Node} ! finished,
io:format("ping finished~n", []);
ping(N, Pong_Node) ->
{pong, Pong_Node} ! {ping, self()},
receive
pong ->
io:format("Ping received pong~n", [])
end,
ping(N - 1, Pong_Node).
pong() ->
receive
finished ->
io:format("Pong finished~n", []);
{ping, Ping_PID} ->
io:format("Pong received ping~n", []),
Ping_PID ! pong,
pong()
end.
start_pong() ->
register(pong, spawn(tut17, pong, [])).
start_ping(Pong_Node) ->
spawn(tut17, ping, [3, Pong_Node]).