RE: [Haskell] runProcess with out=err

On 28 July 2005 14:35, Ian Lynagh wrote:
With the below code (compiled by ghc) I get "a.out: thread blocked indefinitely".
Changing the second (Just hout) to Nothing makes it run as expected.
If I dup fdout to get an fderr and then try to also convert that to a handle then I get "a.out: openFile: resource busy (file is locked)".
Is there a way to write this with stdout and stderr going to the same handle?
------------------- module Main (main) where
import System.Posix (openFd, defaultFileFlags, stdFileMode, OpenMode(ReadOnly, WriteOnly), fdToHandle) import System.Process (runProcess, waitForProcess)
main :: IO () main = exec "echo" ["foo"] "in" "out"
exec :: String -> [String] -> FilePath -> FilePath -> IO () exec c args inp out = do fdin <- openFd inp ReadOnly Nothing defaultFileFlags fdout <- openFd out WriteOnly (Just stdFileMode) defaultFileFlags hin <- fdToHandle fdin hout <- fdToHandle fdout ph <- runProcess c args Nothing Nothing (Just hin) (Just hout) (Just hout) waitForProcess ph >>= print
This bug was fixed in rev. 1.12 of System.Process.Internals, and has been merged into the 6.4 branch. Cheers, Simon
participants (1)
-
Simon Marlow