C program output in wrong order Eclipse

Yeah, Eclipse will buffer a certain amount of output (I don’t remember how much off hand) before it will appear in the output window. Eclipse is communicating with the attached process through a pipe which is fully buffered. It won’t flush until either fflush() is called or the buffer is full. I found that when debugging with Eclipse, things work best if I put the following near the beginning of my application:

setvbuf(stdout, NULL, _IONBF, 0);

This will cause stdout to flush immediately whenever it is written to. If you want to use that for debugging and turn it off otherwise, you can conditionally compile it:

#ifdef DEBUG
setvbuf(stdout, NULL, _IONBF, 0);
#endif

No need to put fflush() everywhere this way.

Edit

Here’s where I found the solution when I first ran into this issue myself.

http://wiki.eclipse.org/CDT/User/FAQ#Eclipse_console_does_not_show_output_on_Windows

Eclipse’s console is not a true console or terminal but rather eclipse is communicating with the attached process through a pipe which is fully buffered not line buffered. This is why a newline ‘\n’ does not cause the buffer to be flushed.

Leave a Comment