Usando stdin con select () en C
Tengo el siguiente programa:
<code> #include <stdio.h> #define STDIN 0 int main() { fd_set fds; int maxfd; // sd is a UDP socket maxfd = (sd > STDIN)?sd:STDIN; while(1){ FD_ZERO(&fds); FD_SET(sd, &fds); FD_SET(STDIN, &fds); select(maxfd+1, &fds, NULL, NULL, NULL); if (FD_ISSET(STDIN, &fds)){ printf("\nUser input - stdin"); } if (FD_ISSET(sd, &fds)){ // socket code } } } </code>
El problema al que me enfrento es que, una vez que se detecta la entrada en STDIN, el mensaje "Entrada de usuario - entrada estándar" sigue imprimiendo ... ¿por qué no se imprime solo una vez y luego en la verificación de bucle de bucle cuál de los descriptores ha ingresado?
Gracias.