module Main where

import Control.Concurrent
import System.IO
import System.Process

main :: IO ()
main = do (_,Just hout,_,p) <- createProcess (proc "sh" ["-c", "echo start; sleep 10"])
                            { std_out = CreatePipe, create_group = True }
          start <- hGetLine hout
          putStrLn start
          interruptProcessGroupOf p
          t <- myThreadId
               -- timeout
          forkIO $ do
            threadDelay 5000000
            putStrLn "Interrupting a Running Process Failed"
            hFlush stdout
            killThread t
          waitForProcess p
          putStrLn "end"
          return ()
