我是新來的套接字編程,我試圖找出投票如何工作。所以我做了一個小例子程序。該程序似乎按照我期望的方式工作,但是當我註釋掉int dummy
的行時,for
循環僅在假設執行10次時才運行一次迭代。我不明白的是這個變量與for
循環有什麼關係。程序假設在3.5秒後打印「超時」,如果有可用輸入,則打印「返回打印」。輪詢函數如何在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;
}
順便說一句,原來的海報應該仔細閱讀'民意調查'的手冊頁,例如http://linux.die.net/man/2/poll – 2012-02-07 05:26:46