Я новичок в программировании сокетов и пытаюсь понять, как работает опрос. Итак, я сделал небольшой пример программы. Программа, кажется, работает так, как я ожидаю, но когда я закомментирую строку с циклом int dummy
, цикл for
запускает только одну итерацию, когда предполагается, что она будет делать десять. Я не понимаю, как эта переменная имеет отношение к циклу for
. Предполагается, что программа напечатает «timeout» через 3,5 секунды и напечатает «return hit», если есть доступный ввод.
#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;
}