[Haskell-cafe] getChar + System.Cmd.system + threads causes
hangups
Einar Karttunen
ekarttun at cs.helsinki.fi
Mon Feb 20 11:49:25 EST 2006
Here is a version that works fine:
myRawSystem cmd args = do
(inP, outP, errP, pid) <- runInteractiveProcess cmd args Nothing Nothing
hClose inP
os <- pGetContents outP
es <- pGetContents errP
ec <- waitForProcess pid
case ec of
ExitSuccess -> return ()
ExitFailure e ->
do hPutStrLn stderr ("Running process "++unwords (cmd:args)++" FAILED ("++show e++")")
hPutStrLn stderr os
hPutStrLn stderr es
hPutStrLn stderr ("Raising error...")
fail "Running external command failed"
pGetContents h = do
mv <- newEmptyMVar
let put [] = putMVar mv []
put xs = last xs `seq` putMVar mv xs
forkIO (hGetContents h >>= put)
takeMVar mv
More information about the Haskell-Cafe
mailing list