Running processes concurrently
Jump to navigation
Jump to search
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.")