我想从Haskell做一个popen() /python的subprocess.communicate --启动一个程序,给它stdin,然后得到它的stdout/stderr。最直接/Haskell化的方式是什么?
发布于 2009-11-11 09:29:57
选择MissingH的System.Cmd.Utils和标准库的System.Process,它们都很容易使用,既有高级的便利函数(只需抛出字符串,也可以懒惰地获取字符串)和低级的管道函数(它们实际上提供句柄,就像其他语言/框架中的大多数popen函数一样)。
import System.Process
main = do
let cmd = "mail"
args = ["root@localhost", "-s", "does this act like popen?"]
input = ["Hello, world!"]
(rc, out, err) <- readProcessWithExitCode cmd args input
putStrLn $ "mail exited: " ++ show rc
mapM_ putStrLn $ map ("out: " ++) $ lines out
mapM_ putStrLn $ map ("err: " ++) $ lines errhttps://stackoverflow.com/questions/1712347
复制相似问题