[Haskell-cafe] "piping" to system call
Jules Bean
jules at jellybean.co.uk
Tue Sep 23 09:02:18 EDT 2008
Marc Weber wrote:
> On Tue, Sep 23, 2008 at 01:37:56PM +0200, Janis Voigtlaender wrote:
>> Hi,
>>
>> 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
Beware. The above code is broken.
Whether it appears to work depends on your OS, buffering settings, and
the size of any underlying buffers.
The simplest safe way to do this is to fork a separate thread for one
side or the other of the handle.
Jules
More information about the Haskell-Cafe
mailing list