Urizev wrote:
> I want to execute a program which prompts for commads from standard
> input and returns responses to standard output, this process repeats
> several times. I want to execute it from a ruby application. I tried
> to use a popen call to do it, but it do not flush the output until
> input channel is closed. I need to know what the process request
> before sending a response.
>
It's hard to tell what you mean by 'output' and 'input'. There are two
sides to a pipe so side1's output is side2's input and side2's output is
side1's input. So, when you say *it* doesn't flush the output, what do
you mean? What is *it*?
Also, what are you referring to when you say 'process'? When you call
popen, you are starting what is typically called a "subprocess". In
any case, there are two processes, so which one are you referring to?
If something is buffering output, then program it so that it doesn't
buffer output, i.e. call flush. If you are unable to reprogram some
code somewhere to call flush, then I think the only way you can make it
flush is by causing one side to terminate, which automatically flushes
the pipe.
--
Posted via
http://www.ruby-forum.com/.