
David Roundy wrote:
Why not then leave the stderr out of the output, and just print it to stderr? It's the standard location to send error output, and I'd hate to lose it.
Ok, so here's the new proposal: readProcess :: FilePath -- ^ command to run -> [String] -- ^ any arguments -> String -- ^ standard input -> IO String -- ^ stdout only (stderr is inherited) readProcessWithExitCode :: FilePath -- ^ command to run -> [String] -- ^ any arguments -> String -- ^ standard input -> IO (ExitCode,String) -- ^ exitcode, and stdout + stderr There's an inconsistency between the two variants in where stderr goes, but that seems unavoidable. And you can always roll your own if you want something different, it's only 12 lines of code and all the pieces are available separately. We can put the code for one of them in the docs as an example. Ok? I'm also thinking of adding closeFds :: Bool to the CreateProcess record, to indicate that all FDs except 0..2 should be closed in the child. Python's version has this: http://docs.python.org/lib/node528.html (which is suspiciously similar to ours, clearly great minds think alike :-) and we have a ticket open for this in GHC: http://hackage.haskell.org/trac/ghc/ticket/1415 Cheers, Simon