Erlang中文论坛
标题:
关于 连接远程 节点的打印输出问题
[打印本页]
作者:
lfh
时间:
2019-10-11 17:54
标题:
关于 连接远程 节点的打印输出问题
io:format(IoDevice, Format, Data) 决定了输出到何处。
正常的 io:format(Format, Data) 默认输出是 erlang:group_leader(),就是该进程的 小组领导。
所以接收 远程节点的 io:format 输出, 只要把 本地连接节点的 erlang:group_leader() 告知远程节点,让远程节点发过来即可。
这其中存在一个问题,自带的 io:format(IoDevice, Format, Data) 是阻塞的,对远程节点来说是个比较大的负担。
远程发送打印时可以对 io:format 进行更改, 改成 只发送不管结果, 负担就大幅度减小。
下面直接贴上改进代码:
io_format(Pid, Format, Args) ->
case net_kernel:dflag_unicode_io(Pid) of
true -> Req = {put_chars,unicode,io_lib,format,[Format,Args]};
false -> Req = {put_chars,io_lib,format,[Format,Args]}
end,
Pid ! {io_request, self(), null, Req},
ok.
作者:
dreamxyp
时间:
2019-12-18 15:42
把要写的日志发到别的 进程去 不应响业务进程
io:format(IoDevice, Format, Data) 阻塞也没关系的
欢迎光临 Erlang中文论坛 (https://bbs.erldoc.com/)
Powered by Discuz! X3.3