[Haskell-cafe] "piping" to system call

Brandon S. Allbery KF8NH allbery at ece.cmu.edu
Tue Sep 23 11:49:15 EDT 2008


On 2008 Sep 23, at 7:55, Marc Weber wrote:

> On Tue, Sep 23, 2008 at 01:37:56PM +0200, Janis Voigtlaender wrote:
>> assume I have a program taking input from stdin. How do I call it  
>> from
>> Haskell while feeding to it a string as input.
>
> Sure, have a look at
> http://hackage.haskell.org/packages/archive/process/1.0.0.0/doc/html/System-Process.html#v 
> :runInteractiveProcess
>
>        rnuInteractiveCommand does would you want
>        (in,out,err,pId) <- runInteractiveProcess "cat" ...
>        hPutStrLn "test" in
>        hClose in
>        outContents <- hGetContents out
>        print outContents


Note that this will deadlock if either the input or the output is too  
long; you should forkIO a thread to do either the input or the output.

-- 
brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allbery at kf8nh.com
system administrator [openafs,heimdal,too many hats] allbery at ece.cmu.edu
electrical and computer engineering, carnegie mellon university    KF8NH




More information about the Haskell-Cafe mailing list