[I use Perl in the examples for brevity and ease of reproduction, but the concepts I illustrate are not related to Perl. C works the same way.]
, , , () . :
perl -e'$|=0; print "a"; sleep(2); print "b\n";'
perl -e'$|=1; print "a"; sleep(2); print "b\n";'
. . :
perl -e'print "a"; sleep(2); print "b\n";'
perl -e'print "a\n"; sleep(2); print "b\n";'
. , stdout . :
perl -e'print "a\n"; sleep(2); print "b\n";'
perl -e'print "a\n"; sleep(2); print "b\n";' | cat
unbuffer perl -e'print "a\n"; sleep(2); print "b\n";' | cat