The below given code prints only hello-err for some times then in bulk it prints hello-out...
what is the reason behind this?If i am adding \n in fprintf then it works fine...
#include <stdio.h>
#include <unistd.h>
int main()
{
while(1)
{
fprintf(stdout,"hello-out");
fprintf(stderr,"hello-err");
sleep(1);
}
return 0;
}
output of this code is On Solaris-Sparc Machine : hello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-
errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-
errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-
errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-
errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-
errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-
errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-
errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-
errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-
errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-errhello-
errhello-errhello-errhello-errhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-
outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-
outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-
outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-
outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-
outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-
outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-
outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-
outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-
outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-outhello-
outhello-outhello-out
While as per c it should be :hello-outhello-errhello-outhello-errhello-outhello-errhello-outhello-err...
for reply thanks in advance
rohit raj
You are writing to two different output streams. C does not dictate how streams should buffer their data. Many implementations choose no buffering on stderr and line buffering on stdout. Your stdout seems to have a 1024 byte line buffer, so it will output your infinitely long line in 1024 byte chunks. If you want to intermingle stderr and stdout, then use fflush() or \n to get sensible order.