p**p 发帖数: 3386 | 1 在一个while循环里面用select来判断数据是否准备好,设置了5秒的timeout。
照理说如果没有设备准备好,select等待5秒后会出现timeout,然后返回0。但是在运
行中select不停的返回0,根本不等5秒。这是怎么回事啊?下面是代码:
n = select(max_fd,&input, NULL,NULL,&timeout);
if (n<0) {perror("select");exit(-1);}
if (n==0) {
printf("Read timeout\n");
}
else printf("Data is ready\n"); | p**p 发帖数: 3386 | 2 我明白了。刚刚看了看man page,发现select是要修改timeout值的,只有pselect不会
。因此每次调用select以后都需要重新设置timeout.否则下次调用的时候相当于
timeout被设置为0,就会出现上面的问题了。 |
|