如何将进程的stdout和stderr传递给同一个Handle?在unix系统上,它非常简单,只需使用createPipe
并将写端传递给runProcess
stdout和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
函数来运行您的过程。
归档时间: |
|
查看次数: |
417 次 |
最近记录: |