将正在进行的系统进程的整个输出绑定到Haskell中的变量

时间:2016-05-12 21:06:17

标签: haskell process

以下代码段执行grep命令,并将输出分别绑定到stdout'stderr'errCode

main :: IO ()
main = do
    let stdin' = ""
    (errCode, stdout', stderr') <- readProcessWithExitCode "grep" ["search-term" ,"-nr", "/path/to/be/searched"] stdin'
    putStrLn $ "stdout: " ++ stdout'
    putStrLn $ "stderr: " ++ stderr'
    putStrLn $ "errCode: " ++ show errCode

问题是stdout'仅捕获搜索的第一个结果。我认为这是因为grep类似于生成的进程,它将搜索结果一个文件提供给一个文件,直到完成为止。

问题:我需要将grep标准输出的整个输出绑定到stdout'。这在Haskell中是否可行,如果是这样,那么这是一种惯用的方法吗?

编辑:事实证明问题不是我想象的那样。也就是说,我的目录中只有一个文件没有符号链接。我忘了使用-R作为grep的选项,因此搜索中没有遍历这些符号链接!问题已经解决。

0 个答案:

没有答案