1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
module Main where
import Control.Concurrent
import System.IO
import System.Process
launch :: String -> IO String
launch i = do (hin,hout,herr,ph) <- runInteractiveProcess "cat" [] Nothing Nothing
-- forkIO $ collect ph -- This doesn't seem to be relevant to the problem.
forkIO $ do hPutStr hin i
hClose hin
hGetContents hout
main :: IO ()
main = do o <- foldl (>>=) (return "foo") (replicate 5 launch)
t <- myThreadId
-- timeout
forkIO $ do threadDelay 5000000; killThread t
putStrLn o
|