haskell System.Process.createProcess 重定向标准输出和标准错误

haskell System.Process.createProcess redirect stdout and stderr

如何使用 System.Process 中的 createProcess 将 std_in 和 std_err 重定向到一个文件?

使用 CreateProcess 类型的 std_instd_err 字段:

foo cmd fin ferr =
    withFile fin  ReadMode  $ \hin  ->
    withFile ferr WriteMode $ \herr -> do
        (_, _, _, ph) <- createProcess (proc cmd [])
            { std_in  = UseHandle hin
            , std_err = UseHandle herr
            }
        waitForProcess ph