سؤال

أريد أن أفعل ظهرا () / 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

نصائح أخرى

الخيار الآخر قد يكون للاستخدام شيلي صفقة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top