Erlang : RPC 到一个节点,该节点上有输出

Posted

技术标签:

【中文标题】Erlang : RPC 到一个节点,该节点上有输出【英文标题】:Erlang : RPC to a node with output on that node 【发布时间】:2009-05-16 11:05:29 【问题描述】:

有没有办法对节点进行 rpc 调用,但在该节点上显示输出,而不仅仅是在调用节点上(事实上,如果调用节点没有显示输出,我不会太在意) .

虽然我知道我可以使用

rpc:call( Node, erlang, display, [ someTerm ] ).

这将在 Node 上显示“someTerm”,我真正想要的是在远程节点终端上显示执行方法的结果,以便尝试在 Node 上运行 ls:

rpc:call( Node, c, ls, [] ).

它实际上会将文件夹内容的结果写入Node的终端。

我的想法是我可以从单个节点驱动演示,但让我正在驱动的节点显示它们的操作历史记录。

【问题讨论】:

rpc:call( Node, c, ls, [] ) 在 node() 上显示结果,但不在 Node 上。你的意思是你想在节点上看到结果吗?你的最后一句话说出来。 【参考方案1】:

试试 ;-)

rpc:call( Node, c, ls, [] ).

或者当你想在Node上显示它时

spawn(Node, fun()->group_leader(whereis(user),self()), c:ls() end).

或者更有趣的例子,将本地进程的输出重定向到Node的另一个终端

group_leader(rpc:call(Node, erlang, whereis, [user]), self()),
c:ls(),
group_leader(whereis(user), self()).

【讨论】:

道歉..我表达得很糟糕-我已经重新表达了 我添加了如何将输出重定向到另一个节点的示例。

以上是关于Erlang : RPC 到一个节点,该节点上有输出的主要内容,如果未能解决你的问题,请参考以下文章

在 Erlang 中通过 RPC 在远程节点上创建套接字时,无法接受套接字上的连接

我可以在 C 节点中获得 Erlang OTP 行为吗?

如何连接到已注册的节点(Erlang)并从 Ejabberd 使用它

Erlang:不允许的节点/也许 Cookie 问题

Erlang badrpc,nodedown 在进行 rpc:call 时出错

基于zookeeper实现rpc注册中心