我首先在分离模式下启动 node_a,然后启动 node_b 控制台并使用 JCL(Ctrl+G) 连接到 node_a,然后我使用 application:start/1 启动应用程序。然后我看不到应用程序中的每个 io:format 输出。如何解决这个问题?
问问题
278 次
2 回答
0
您可以为此使用 erlang 函数 group_leader(Group_leader,Pid) 。这里有一个小例子:
在一个控制台中,我运行该函数:
ploop(I) ->
io:format("mess num ~p, group_leader is ~p~n",[I,group_leader()]),
receive
stop -> io:format("bye bye~n");
{group,P,F} ->
group_leader(P,self()),
F ! group_changed,
ploop(0)
after 5000 ->
ploop(I+1)
end.
在连接到远程外壳后的第二个控制台中,我发送消息:
PD ! {group,group_leader(),self()}.
其中 PD 是进程 ploop 的 pid,仅此而已。但这必须为您想要捕获 io:format 的所有进程完成。您可以使用 processes() 的结果来执行此操作,但我没有验证它。
于 2013-06-25T07:26:08.230 回答
0
而不是使用io:format
像lager这样的日志记录解决方案,并执行tail -f console.log
查看更新到 STDOUT 输出的操作。如果我没记错的话/dev/null
,默认情况下 STDOUT 会发送到一个分离的节点上(如果你不使用像 lager 这样的日志记录解决方案)。
如果您想使用远程 shell 并查看直接输出,您可以使用io:fwrite(user,"the result is ~w\n",[X])
.
于 2013-06-25T06:08:43.900 回答