1

By default, is STDOUT unbuffered? If not what is the type of its default buffering

Thanks

1
  • 2
    In what language/environment? Commented Dec 29, 2010 at 7:06

2 Answers 2

5

You didn't give a language, but assuming that you're using C's stdio functions (fopen() etc.) or a language that uses these (and most do, for portability reasons):

It depends on the underlying C runtime library.

Most libraries will try to detect whether STDOUT is connected to a terminal, and avoid buffering if so, and perform block buffering (e.g. my Linux system buffers 8Kb at a time) if not.

Sign up to request clarification or add additional context in comments.

2 Comments

Pretty sure this is wrong; stdout is typically line-buffered when connected to a terminal, not unbuffered. When all your outputs end in a newline, the difference is irrelevant, but if you're outputting without newlines (say, showing a "progress bar" by outputting a dot at a time), it will be buffered. Explicit calls to fflush would be needed to output partial lines on demand, or you'd use setvbuf to change the buffering mode for the FILE* in general.
@ShadowRanger: You're right, please edit to add this.
1

Short Answer: By default STDOUT is usually unbuffered. If this is a problem for you, there is fflush(stdout); but that is rarely needed

1 Comment

Again, as noted on accepted answer, stdout is typically line buffered when connected to a terminal, and block buffered otherwise. No common C runtime I'm aware of makes it unbuffered by default.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.