[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/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.
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
http://wwwtcs.inf.tu-dresden.de/~voigt/
mailto:voigt at tcs.inf.tu-dresden.de
More information about the Haskell-Cafe
mailing list