Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/forums/c/)
-   -   Help in debugging this simple code snippet. (http://www.go4expert.com/forums/help-debugging-simple-code-snippet-t12845/)

rj81inmit 11Aug2008 04:06

Help in debugging this simple code snippet.
 
Why does it always throw stderr ? Kindly help...

#include <stdio.h>
#include <unistd.h>
int main()
{
while(1)
{
fprintf(stdout,"hello-out");
fprintf(stderr,"hello-err");
sleep(1);
}
return 0;
}


thanks, robin.

xpi0t0s 11Aug2008 04:18

Re: Help in debugging this simple code snippet.
 
What do you mean by "throw stderr"? What is the output from your program, and what are you expecting it to do?

I changed it slightly (while(1) -> for (int i=0; i<5; i++)), built and ran it in Visual Studio 2005 (without the sleep() call either cos I couldn't find where this was displayed) and the output was:
hello-out
hello-err
hello-out
hello-err
hello-out
hello-err
hello-out
hello-err
hello-out
hello-err

- as you see, displaying both hello-out and hello-err.

If you change it from while(1) to a short loop, what is the output then?

rj81inmit 11Aug2008 04:45

Re: Help in debugging this simple code snippet.
 
Thats fine if you test with a finite for loop. but why is it first printing set of hello-err ? should it not print hello-out and then hello-err?
#include <stdio.h>
#include <unistd.h>
int main()
{
for(int i=0;i<5;i++)
{
fprintf(stdout,"hello-out");
fprintf(stderr,"hello-err");
// sleep(1);
}
return 0;
}

output: hello-errhello-errhello-errhello-errhello-errhello-outhello-outhello-outhello-outhello-out
expected (??) : hello-out hello-err hello-out hello-err hello-out hello-err hello-out hello-err hello-out hello-err
Just wanted to understand how the streams are interpreted by the compilers.

faizulhaque 11Aug2008 10:53

Re: Help in debugging this simple code snippet.
 
This is Not Correct Section for That Go to C/C++ Section for making this.

shabbir 11Aug2008 12:53

Re: Help in debugging this simple code snippet.
 
Moved to C-C++ forum.

xpi0t0s 11Aug2008 14:31

Re: Help in debugging this simple code snippet.
 
It probably depends on how streams work on your platform. What are you using? (If you're not sure show me the output of uname -a)
Try adding fflush(stream-name); after each printf and see what happens, i.e.:
fprintf(stdout,"hello-out\n"); fflush(stdout);
fprintf(stderr,"hello-err\n"); fflush(stderr);
Output is often buffered rather than printed immediately so this could be the cause of the behaviour.


All times are GMT +5.5. The time now is 01:51.