在Erlang中,如何独立捕获子进程的stdout和stderr?

Vul*_*ire 6 erlang

我试图弄清楚如何从Erlang中的系统子进程中拉出stdout和stderr.(不要与Erlang进程混淆.)问题是我试图独立地提取流的输出.

open_port/2似乎让我大部分都在那里,但它似乎没有提供区分两个流的方法.有stderr_to_stdout选项,但这不是我想要的; 我想从两个数据流中获取数据,但能够区分这两个流.

有什么建议?谢谢.

更新:我理想地寻找适用于Windows和Linux的解决方案.

Ste*_*ski 0

您可能想尝试erlexec。正如其文档所解释的,它允许对 stdout 和 stderr 进行单独控制,并且通常它比open_port/2从 Erlang 管理操作系统进程要灵活得多。