这是一个在Erlang的两个进程通信程序.
我需要在不同的计算机中运行每个进程。
我需要运行erl -name ping
在computer2中,其主机名为Linux-2
我得跑了
erl -name pong在computer1中,其主机名为linux-1。
然后,
在计算机1上,我运行:
tut17:start_pong().在计算机2上,我运行:
tut17:start_ping(pong@linux-1)但是,我错了:
的算术表达式中的错误参数
在"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]).发布于 2012-04-20 06:10:37
将节点名称放在单引号中:
tut17:start_ping('pong@linux-1')http://www.erlang.org/doc/reference_manual/data_types.html#id66276
如果原子不以小写字母开头,或者它包含字母数字字符以外的其他字符,则应该用单引号(')括起来,下划线(_)或@.。
https://stackoverflow.com/questions/10238767
复制相似问题