我试图弄清楚如何从Erlang中的系统子进程中提取stdout和stderr。 (不要与Erlang进程混淆。)问题是我试图独立地提取流的输出。
open_port / 2似乎让我大部分都在那里,但它似乎没有提供区分两个流的方法。有stderr_to_stdout选项,但这不是我想要的;我想从两个数据流中获取数据,但能够区分这两个流。
有什么建议吗?感谢。
更新:我理想地寻找可在Windows和Linux上运行的解决方案。
答案 0 :(得分:0)
您可以尝试erlexec。正如its documentation所解释的那样,它允许对stdout和stderr进行单独控制,并且通常它比open_port/2
更灵活,可以从Erlang管理OS进程。
答案 1 :(得分:0)
试试这个:
Path = filename:join(["./priv", "log", "log_file_name"]),
{ok, F} = file:open(Path, [write]),
group_leader(F, self()),
erlang:display("Anything this process outputs now gets redirected").