[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-0019.obj>
More information about the Submit
mailing list