in reply to
can you autoflush a program in unix?
On Unix there are some ugly tricks to modify the behaviour of compiled external programs by
- faking the application into thinking it's connected to a tty (resulting usually less buffering, sometimes also in different output & behaviour). expect at one time included an unbuffer tool, or the examples Ikegami provided in the first comment.
- another way would be to use the shell variable $LD_PRELOAD and friends to either override some subset of libc or (maybe simpler) make an existing dynamically linked application use a modified libc instead. I didn't find usable debugging libraries on the quick, but here's a 2008 hint at a line_buffer.so for use with probably glibc.
LD_PRELOAD is ugly: it usually works for many uses of most dynamically linked programs. But it still depends somewhat on the implementation details of the program in question.
And it has a list of constraints, consequences and side-effects the size of a dictionary...
- a third option is that some libraries can be controlled by environment variables. With my search terms, I only found some decade-old change requests for glibc. And their rejections.
Here are two interesting 2006/2009 links:
pixelbeat's overview on the topic and the
stdbuf manpage. I'm wondering about the explicit core-utils mention (doubly so with the extremely recent version of 7.5, when 6.10 seems to be the usual most recent version in distros), so maybe this doesn't work with an older generic dynamically linked program.
Try e.g. variations of these keywords on google: LD_PRELOAD debugging libc glibc unbuffer flush autoflush stdout.
Please add a comment here with your results, e.g. if you can get stdbuf to work or find an interesting debugging library for LD_PRELOAD. Merci!