Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 05 Jul 2009 14:20:57 +0200 (CEST)
From:      Alexander Best <alexbestms@math.uni-muenster.de>
To:        Jilles Tjoelker <jilles@stack.nl>
Cc:        freebsd-hackers@FreeBSD.org
Subject:   Re: carriage return with stdout and stderr
Message-ID:  <permail-200907051220571e86ffa8000022e0-a_best01@message-id.uni-muenster.de>
In-Reply-To: <20090705120514.GA45921@stack.nl>

next in thread | previous in thread | raw e-mail | index | archive | help
thanks. i remembered fprintf being buffered, but i always thought \r would
also empty the buffer. now that explains everything. ;-)

alex

Jilles Tjoelker schrieb am 2009-07-05:
> On Sun, Jul 05, 2009 at 01:42:01PM +0200, Alexander Best wrote:
> > i'm running something similar to this pseudo-code in an app of
> > mine:

> > for (i=0 ....)
> >     fprintf(stdout,"TEXT %d\r", int);

> > what's really strange is that if i print to stdout the output isn't
> > very
> > clean. the cursor jumps randomly within the output (being 1 line).
> > if i print
> > to stderr however the output looks really nice. the cursor says
> > right at the
> > front of the output all the time. just like in burncd e.g.

> > what's causing this? because i'd rather print to stdout.

> If you are writing to a terminal, stdout is line-buffered. This means
> that output is flushed when the buffer is full or a '\n' is written.
> A
> '\r' is not good enough. You can force a write using fflush(stdout).

> stderr is always unbuffered, so everything is written immediately.




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?permail-200907051220571e86ffa8000022e0-a_best01>