Io uso linux, se inizio ad inserire righe da stdin le prende normalmente ma, appena do CTRL + D mi esce senza riconoscere l'eof.

Cioe' mi chude il programma

Come faccio invece a farlo riconoscere come EOF?
Ad esempio, quando come input gli do un file normale uso:

if( !foeof( fp ) )
{
fgets( stringa, 512, fp );
}