[repost] Patch to make cpdup's stdout unbuffered

Simon 'corecode' Schubert corecode at fs.ei.tum.de
Tue Jun 8 15:39:29 PDT 2004


On 09.06.2004, at 00:19, Chris Pressey wrote:

The installer popen()'s "cpdup -vvv src dest" and it reads from this
pipe to monitor cpdup's progress.  Unfortunately, since cpdup's
output is fully buffered, cpdup's progress can't be usefully
measured this way.
Now, we could add a flag for every single program to write unbuffered
(linebuffered) output. Or we could do some (non-POSIX?) magic in libc
to get most of this just fixed by doing a env
LIBC_STDOUT_BUFFERING=line $program or whatever...
The man pages make it sound a bit like this is already possible, but I
can't figure out how to do it.
So by the sounds of it, the attached program should be able to run
another program, forcing that other program's stdout to be unbufferred.
But in (a small amount of) testing, I couldn't seem to get that
behaviour.
The buffering is done in the FILE* functions in libc, not on 
STDOUT_FILENO in the kernel.

This is why we need to tell *libc* not to buffer; this has nothing to 
do with the fd as I understand it.

cheers
  simon
--
/"\
\ /
 \     ASCII Ribbon Campaign
/ \  Against HTML Mail and News
Attachment:
PGP.sig
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pgp00001.pgp
Type: application/octet-stream
Size: 186 bytes
Desc: "Description: This is a digitally signed message part"
URL: <http://lists.dragonflybsd.org/pipermail/submit/attachments/20040608/3bd98de9/attachment-0014.obj>


More information about the Submit mailing list