Salve a tutti, innanzitutto complimenti per la qualità del forum, davvero impressionante

volevo porvi subito un quesito, mi serviva una funzione per svuotare lo stdin (sto scrivendo in ambiente UNIX, quindi ho deciso di non usare fflush() ), ed ho trovato questa:

int caratteri_stdin(){
fd_set rds;
struct timeval tv;
FD_ZERO(&rds);
FD_SET(fileno(stdin), &rds);
tv.tv_sec = 1; /* timeout di 1 secondo */
tv.tv_usec = 0;
return (select(fileno(stdin)+1, &rds, NULL, NULL, &tv) > 0);
}

void svuota_stdin(){ /* la funzione che svuota lo stdin */
while(caratteri_stdin())
getchar();
}

qualcuno potrebbe spiegarmi, per favore, in cosa consiste esattamente questa funzione e per caso conoscete qualche metodo diverso per fare la stessa cosa?

Grazie mille in anticipo, e scusate se non mi sono nemmeno presentato, ma sto in crisi piena ahahah