Running processes concurrently
Revision as of 21:22, 23 June 2007 by BrettGiles (categorize)
This example forks many processes in parallel, then waits for each process to exit. Finally, it prints the number of failures.
import System.Process import Control.Concurrent import System.Exit main = do let cmds = replicate 100 "sleep 10s" ps <- mapM runCommand cmds es <- mapM waitForProcess ps case length . filter (/= ExitSuccess) $ es of 0 -> putStrLn "All commands ran successfully." n -> putStrLn ("There were " ++ show n ++ " failures.")