如何在Haskell中组合句柄?

我想在Haskell中有一些像bash的2>& 1重定向,将stdout和stderr从进程组合成单个句柄.直接用System.Process.createProcess或类似的库函数来做这个很好,特别是如果它使用与bash重定向w.r.t相同的语义.从手柄交错输入.

createProcess提供的灵活性首先看起来很有前途:可以指定用于标准文件描述符的句柄,因此可以为stdout和stderr提供相同的句柄.但是,在调用之前,Handle参数必须已经存在.在调用该函数之前,没有能力在空中创建一个句柄,我不知道可以通过这种方式解决问题.

编辑:无论平台如何,解决方案都需要工作.

here

import GHC.IO.Handle   -- yes, it's GHC-specific
import System.IO

main = do
  stdout_excl <- hDuplicate stdout
  hDuplicateTo stderr stdout  -- redirect stdout to stderr

  putStrLn "Hello stderr" -- will print to stderr
  hPutStrLn stdout_excl "Hello stdout" -- prints to stdout
http://stackoverflow.com/questions/6736790/how-can-i-combine-handles-in-haskell

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:如何在Haskell中组合句柄?