[Haskell-cafe] "piping" to system call

Janis Voigtlaender voigt at tcs.inf.tu-dresden.de
Tue Sep 23 09:12:18 EDT 2008

Jules Bean wrote:
> 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/ 
>>         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.

Thanks for the warning. I needed it only for a small scripting task, and
it seems to work well enough. Actually, I am not even interested in the
output, so I just went for waitForProcess. This comes with additional
warnings in the docs, but I did not experience any problems in my
concrete setting so far.

Ciao, Janis.

Dr. Janis Voigtlaender
mailto:voigt at tcs.inf.tu-dresden.de

More information about the Haskell-Cafe mailing list