View Single Post
Old May 22nd, 2005, 8:48 AM   #1
o0zi
Newbie
 
Join Date: May 2005
Posts: 1
Rep Power: 0 o0zi is on a distinguished road
Resetting stdin after EOF

I have a piece of code that looks like this:

---example.c---

#include <stdio.h>

int main() {
        char c;
        while ((c = getchar()) && (c != EOF))
                ;
        putchar('\n');
        c = getchar();
        printf("%c\n", c);
}
Entering input from the keyboard, this program works fine.
However, if I then redirect input to this program (e.g. dmesg | ./example), then I get a garbage character printed to the console, and the program does not wait for input from the keyboard.
I assume this is something to do with resetting stdin - how can I pass input back to the keyboard when stdin has been set to receive input from a redirect?

Thanks,
Rob
o0zi is offline   Reply With Quote