I'm interested in knowing how the printf()
function's flush works when the program exits.
Let's take the following code:
int main(int ac, char **av)
{
printf("Hi");
return 0;
}
In this case, how does printf()
manage to flush its buffer to stdout
?
I guess it's platform dependent, so let's take Linux.
It could be implemented using gcc
's __attribute__((dtor))
but then the standard library would be compiler dependent. I assume this is not the way it works.
Any explanations or links to documentation is appreciated. Thank you.
When the program exits normally, the exit
function has always performed a clean shutdown of the standard I/O library, this causes all buffered output data to be flushed.
Returning an integer value from the main function is equivalent to calling exit with the same value.So, return 0
has the same effect with exit(0)
If _Exit
or _exit
was called, the process will be terminated immediately, the IO won't be flushed.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With