Nächstes Äquivalent zu Subprozess.Communicate in Haskell
-
19-09-2019 - |
Frage
Ich möchte einen Subprozess von popen () / python von haskell machen - starten Sie ein Programm, geben Sie es Stdin und holen Sie sich die Stdout / Stderr. Was ist der direkteste / haskellischste Weg, dies zu tun?
Lösung
Wählen Sie entweder Vermissth's System.Cmd.Utils
und die Standardbibliothek System.Process. Sie sind einfach zu bedienen, mit sowohl hohen Komfortfunktionen (die Sie einfach faul sind) als auch die Fäden zurückgewinnen und möglicherweise faul) als auch bei niedrigen Sanitärfunktionen (die Ihnen tatsächlich Griffe geben, wie die meisten popen
Funktionen in anderen Sprachen/Frameworks).
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
Andere Tipps
Die andere Option könnte verwendet werden Shelly Paket
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow