title: Buffered vs unbuffered IO
body: <p>I learned that by default I/O in programs is buffered, i.e they are served from a temporary storage to the requesting program.
  I understand that buffering improves IO performance (maybe by reducing system calls).  I have seen examples of disabling buffering, like <code>setvbuf</code> in C.  What is the difference between the two modes and when should one be used over the other?</p>