[Haskell-cafe] Execution of external command
duncan.coutts at worc.ox.ac.uk
Thu Dec 13 09:38:24 EST 2007
On Thu, 2007-12-13 at 17:08 +0300, Bulat Ziganshin wrote:
> Hello Duncan,
> Thursday, December 13, 2007, 4:51:20 PM, you wrote:
> >> OK, I'll bite. What's wrong with runInteractiveCommand?
> > It requires threads because you have to pull from both the stdout and
> > stderr to prevent blocking. You could do it with non-blocking reads but
> > not without busy-waiting.
> may be this will be ok (with -threaded)?
No need for -threaded.
> (_, stdout, stderr, _) <- runInteractiveCommand "script params"
> forkIO (hGetContents stderr >>= evaluate.length)
> result <- hGetLine stdout
> hGetContents stdout >>= evaluate.length
Yep, that'll work.
> awkward, but still shorter than code from Cabal
The Cabal code has to work with ghc-6.2 - 6.8, hugs, nhc98 and jhc. It
cannot use threads.
More information about the Haskell-Cafe