Mail Archives: cygwin/2003/06/22/11:36:20
On Sat, Jun 21, 2003 at 11:58:59PM -0700, Brian Dessent wrote:
>Christopher Faylor wrote:
>>This crops up on the cygwin list from time to time.
>>
>>IIRC, if you use 'setbuf(f, NULL)' in newlib (as is the case for
>>stderr), it causes newlib to flush on every character. I submitted a
>>patch to fix this behavior many years ago but it was rejected. I think
>>the rationale was basically a "This isn't broken. We're allowed to do
>>this" but I don't really recall exactly why the patch was rejected.
>
>Hmmm. Well, I managed to come up with this minimal testcase:
There is no need for a test case. I already mentioned that this is a
known issue and pinpointed where the problem lies.
>#include <stdio.h>
>
>int main(int argc, char **argv)
>{
> char *msg = "This is a test! ", *ptr;
> int i;
>
> for(i = 0; i < 100; i++) {
> for(ptr = msg; *ptr; ptr++) {
> fputc(*ptr, stderr);
> }
> }
>}
>
>Running the above with CYGWIN=tty
>real 0m15.806s
>user 0m0.030s
>sys 0m0.010s
>
>Without CYGWIN=tty
>real 0m0.078s
>user 0m0.030s
>sys 0m0.020s
>
>Should it really take almost 16 seconds to print 1600 characters to
>stderr?
>
>Furthermore, if you change 'stderr' to 'stdout' above, the problem no
>longer happens, regardless of the setting of tty in $CYGWIN. So it's
>specific to stderr.
>
>Can anyone make heads (or tails) of this now?
Read my original message. stderr does not buffer its output. stdout does.
cgf
--
Please use the resources at cygwin.com rather than sending personal email.
Special for spam email harvesters: send email to aaaspam AT sourceware DOT org
and be permanently blocked from mailing lists at sources.redhat.com
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
- Raw text -