أقرب ما يعادل subprocess.comMunicate في haskell
-
19-09-2019 - |
سؤال
أريد أن أفعل ظهرا () / Python Subprocess.comMunicate من Haskell - بدء برنامج، أعطها Stdin، والحصول على Stdout / Stderr. ما هي الطريقة الأكثر مباشرة / haskellish للقيام بذلك؟
المحلول
اختيار سما حرية'س 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 err
نصائح أخرى
الخيار الآخر قد يكون للاستخدام شيلي صفقة
لا تنتمي إلى StackOverflow