如何将进程的stdout和stderr传递给同一个Handle?在unix系统上,它非常简单,只需使用createPipe并将写端传递给runProcessstdout和stderr.在Windows上,它更难:
unix-compat和Win32包都没有导出创建管道的方法.
openTempFile(可用于模拟管道)在创建的模式上设置错误的模式Handle.
编辑:提供更多上下文:我想运行一个进程,让它Handle以跨平台的方式将stdout和stderr写入相同的内容.
您可以使用System.Process中的内容。定义中CreateProcess有
std_in :: StdStream, -- ^ How to determine stdin
std_out :: StdStream, -- ^ How to determine stdout
std_err :: StdStream, -- ^ How to determine stderr
Run Code Online (Sandbox Code Playgroud)
并StdStream有这个构造函数:
data StdStream = UseHandle Handle
Run Code Online (Sandbox Code Playgroud)
之后,将您形成的对象传递给createProcess函数来运行您的过程。