No, not the toilet, your file streams.

I was recently working on a project that involved creating a child process and reading its


to update the user inteface. Everything was working great until I sent it off to some testers who reporting that it ‘wasn’t working’ – the interface wasn’t updating correctly. I first thought it was a problem with the shell command itself, maybe it wasn’t performing the operation correctly and thus wasn’t sending the correct message through


but as far as I could tell everything was working perfectly. After about 3 hours of banging my head against the wall trying random things I finally thought to flush the


after sending my status message. It fixed it! But why would it would fine on my laptop (intel), my desktop (ppc), but not my old laptop (ppc)? The problem arose from the fact that right after sending the data to


the child process would call a function that would block indefinitely. I learned my lesson, always flush the stream if you are depending on reading that output in a timely manner!

Average Rating: 4.9 out of 5 based on 187 user reviews.

2 Responses to “”

  • But which is the best way? fflush() or setvbuf() with _IONBF passed as the mode? Or doesn’t it really matter?

  • I think fflush() would work just fine if your working in C.

    The language I was working in was python, so I’ll had to do was stream.flush().

Leave a Reply