私はソケットプログラミングの新人です。私は投票の仕組みを理解しようとしています。そこで私は小さなサンプルプログラムを作った。プログラムは私の期待通りに動作するようですが、int dummy
の行をコメントアウトすると、for
ループは10回実行すると1回の繰り返ししか実行しません。私が理解していないのは、その変数がfor
ループとどのように関係しているかです。プログラムは、3.5秒後に "timeout"を出力し、利用可能な入力があれば "return hit"を出力すると仮定しています。ポーリング機能はどのように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;
}
ところで、元のポスターは 'poll'のマニュアルページを注意深く読んでください。 http://linux.die.net/man/2/poll –