in reply to How to change Open2 input buffering

This has been a known problem for well over a decade. There are several ways to fix this that would be trivial to implement. Probably the best place to start is to get GNU to add such a feature to their C RTL so that others might follow suit.

If you have access to your C RTL source code and can build a new shared library, then you can even fix this yourself (even for C programs that you don't have the source code to -- unless they were statically linked).

The simplest fix I'd use would be an environment variable that, when set, tells the C RTL to act like isatty(2) returned true for stdout (etc.) and so would use "line buffering" instead of "full buffering" (for example, export LINEBUFFEREDPIPES=1).

The current "solution" is to use pseudo ttys instead of pipes. This is quite the aircraft carrier to swat a fly, but that gives you another route to investigate.

                - tye