1

Haskell から popen() / python の subprocess.communicate を実行したい - プログラムを開始し、stdin を与え、stdout/stderr を取得します。これを行うための最も直接的/ハスケル的な方法は何ですか?

4

2 に答える 2

12

MissingHと標準ライブラリのSystem.Processのいずれかを選択します。これらは、高レベルの便利な関数 (文字列を投げて文字列を取得するだけで、おそらく遅延) と低レベルの配管関数 (他の言語/フレームワークのほとんどの関数のように、実際にハンドルを提供します) の両方で簡単に使用できます。 )。System.Cmd.Utilspopen

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 err
于 2009-11-11T01:29:57.127 に答える
0

他のオプションは、shellyパッケージを使用することです

于 2013-12-04T19:17:07.430 に答える