
Neither of these functions returns the return code of the external process as promised: import System.IO hiding ( catch, try ) import System.Process import Control.Concurrent sleep :: Int -> IO () sleep n = threadDelay (abs(n) * 1000000) test1 :: IO () test1 = do (_,_,_, pid) <- runInteractiveProcess "/usr/bin/sleep" ["1"] Nothing Nothing sleep 5 rc <- waitForProcess pid print rc -- *Main> test1 -- *** Exception: waitForProcess: does not exist (No child processes) test2 :: IO () test2 = do (_,_,_, pid) <- runInteractiveProcess "/usr/bin/sleep" ["1"] Nothing Nothing sleep 5 rc <- getProcessExitCode pid print rc -- *Main> test2 -- Nothing I'm using the ghc from CVS-HEAD on Linux/x86. Peter