Soy nuevo en la programación de socket y estoy tratando de descubrir cómo funciona la encuesta. Así que hice un pequeño programa de ejemplo. El programa parece funcionar como lo espero, pero cuando comento la línea que tiene int dummy
, el ciclo for
solo ejecuta una iteración cuando se supone que debe hacer diez. Lo que no entiendo es cómo esa variable tiene algo que ver con el ciclo for
. Se supone que el programa imprime "timeout" después de 3,5 segundos e imprime "return hit" si hay entradas disponibles.¿Cómo funciona la función de sondeo en c?
#include <stdio.h>
#include <poll.h>
int main(int argc, char *argv[]) {
int a;
int b;
int c;
char buf[10];
int i;
struct pollfd ufds[1];
ufds[0].fd = 0;
ufds[0].events = POLLIN;
int rv;
int dummy;
for(i=0; i < 10; i++) {
printf("%i ", i);
if((rv = poll(ufds, 2, 3500)) == -1) perror("select");
else if (rv == 0) printf("Timeout occurred!\n");
else if (ufds[0].revents & POLLIN) {
printf("return hit\n");
read(0, buf, 10);
}
fflush(stdout);
}
return 0;
}
Por cierto, el póster original debería haber leído cuidadosamente la página de manual de 'poll', p. http://linux.die.net/man/2/poll –