Я запускаю свою удаленную оболочку через -remsh (${ROOTDIR}/bin/erl -name shell@${NODE_IP} -remsh ${NODE_NAME}
). Оказавшись там, я установил rb_server group_leader на текущий group_leader оболочки, и rb впредь выводит его вывод на активную оболочку:
(cacherl@192.168.2.31)1> rb:start().
{ok,<0.213.0>}
(cacherl@192.168.2.31)2> group_leader(group_leader(),erlang:whereis(rb_server)).
true
(cacherl@192.168.2.31)3> rb:show(1).
PROGRESS REPORT <0.77.0> 2011-01-28 17:49:23
===============================================================================
supervisor {local,sasl_sup}
started
[{pid,<4543.96.0>},
{name,rb_server},
{mfargs,{rb,start_link,[[]]}},
{restart_type,temporary},
{shutdown,brutal_kill},
{child_type,worker}]
ok
(cacherl@192.168.2.31)4>
РЕДАКТИРОВАТЬ: для удобства инкапсулировать в функцию:
%% @doc Start the report browser and reset its group-leader.
%% For use in a remote shell
start_remote_rb() ->
{ok, Pid} = rb:start(),
true = erlang:group_leader(erlang:group_leader(), Pid),
ok.
С уважением,
Том