Running processes concurrently

From HaskellWiki
Revision as of 00:29, 16 December 2006 by Sjanssen (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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.")