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