Linux 两个进程通过Erlang在两台计算机中通信
这是Erlang中的一个2进程通信程序 我需要在不同的计算机上运行每个进程 我得走了 erl-名称ping 在computer2中,其主机名为linux-2.mydomain 而且,我需要跑步Linux 两个进程通过Erlang在两台计算机中通信,linux,erlang,multiprocessing,Linux,Erlang,Multiprocessing,这是Erlang中的一个2进程通信程序 我需要在不同的计算机上运行每个进程 我得走了 erl-名称ping 在computer2中,其主机名为linux-2.mydomain 而且,我需要跑步 erl -name pong 在computer1中,其主机名为linux-1.mydomain 那么 在计算机1上,我运行: tut17:start_pong(). 在计算机2上,我运行: tut17:start_ping(pong@linux-1) 但是,我有一个错误: 异常错误:算术
erl -name pong
在computer1中,其主机名为linux-1.mydomain
那么
在计算机1上,我运行:
tut17:start_pong().
在计算机2上,我运行:
tut17:start_ping(pong@linux-1)
但是,我有一个错误:
- 异常错误:算术表达式中的参数错误 在操作员-/2中 称为pong@linux-1
-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]).
将节点名称放在单引号中:
tut17:start_ping('pong@linux-1')
原子应该是封闭的
如果不是以小写字母开头或
如果包含字母数字字符以外的其他字符,
下划线(\)或@
将节点名称放在单引号中:
tut17:start_ping('pong@linux-1')
原子应该是封闭的
如果不是以小写字母开头或
如果包含字母数字字符以外的其他字符,
下划线(\)或@