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.
In reply to Re: How to change Open2 input buffering (fix C RTL!)
by tye
in thread How to change Open2 input buffering
by thecap
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |