gpt4 book ai didi

haskell - 如何检索 Haskell 执行的外部程序的输出?

转载 作者:行者123 更新时间:2023-12-03 00:06:08 25 4
gpt4 key购买 nike

我想从 Haskell 运行外部程序并检索其输出和错误流的内容。在其中一个库中我找到了这段代码:

runProcess :: FilePath -> [String] -> IO (ExitCode, String, String)
runProcess prog args = do
(_,o,e,p) <- runInteractiveProcess prog args Nothing Nothing
hSetBuffering o NoBuffering
hSetBuffering e NoBuffering
sout <- hGetContents o
serr <- hGetContents e
ecode <- length sout `seq` waitForProcess p
return (ecode, sout, serr)

这是正确的方法吗?

这里有一些事情我不明白:为什么流被设置为NoBuffering?为什么长度为`seq`?这感觉就像某种黑客攻击。

此外,我想将输出流和错误流合并为一个,以获得与在命令行上执行 2>&1 相同的效果。如果可能的话,我想避免使用专用 I/O 库并依赖 GHC 提供的标准包。

最佳答案

使用 Shelly,一个在 Haskell 中进行类 shell 编程的模块:

http://hackage.haskell.org/package/shelly-1.4.1/docs/Shelly.html

关于haskell - 如何检索 Haskell 执行的外部程序的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21464639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com