in reply to what is EOF and how can I send it?

Try the manual page for stty instead of the one for the shell. eof is a function of the terminal device interface, along with backspace (erase), word erase (werase - many people never use this nifty feature anymore now that few of us are ever on a realllly sloooow link to a remote system these days), interrupt (^C usually), stop, quit, suspend etc.

If you want to emulate that behavior (moving to the next loop or whatever in your program after user presses ^D) then you'll have to DIY. However, since your program isn't a terminal input device, you'll probably decide to do something else. :)