Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re: can you autoflush a program in unix?

by jakobi (Pilgrim)
on Oct 20, 2009 at 20:28 UTC ( #802314=note: print w/ replies, xml ) Need Help??


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!

cu
Peter


Comment on Re: can you autoflush a program in unix?

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://802314]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (8)
As of 2014-11-25 23:36 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My preferred Perl binaries come from:














    Results (160 votes), past polls