k********r 发帖数: 18 | 1 1。请问用select()的话是不是就block在select()这个函数?
2. 按我的理解, 一般可以把select()放在一个while(1)loop里这样就可以一直监听了。
即:每有一个事件就执行一下然后返回到select()停在那里。 但请看这段程序:
。。。
FD_ZERO(&readfds);
FD_SET(STDIN, &readfds);
while(1){
printf("before select\n");
select(STDIN+1, &readfds, NULL, NULL, NULL);
printf("after select\n");
if (FD_ISSET(STDIN, &readfds))
printf("A key was pressed!\n");
}
printf("Timed out.\n");
......
我一按键,程序就不停地执行:
after select
A key was pressed!
before select
a | t****t 发帖数: 6806 | 2 select完了你不把数据拿走,当然下一次还是有啊!拿脚趾头想也知道啊。。。
了。
【在 k********r 的大作中提到】 : 1。请问用select()的话是不是就block在select()这个函数? : 2. 按我的理解, 一般可以把select()放在一个while(1)loop里这样就可以一直监听了。 : 即:每有一个事件就执行一下然后返回到select()停在那里。 但请看这段程序: : 。。。 : FD_ZERO(&readfds); : FD_SET(STDIN, &readfds); : while(1){ : printf("before select\n"); : select(STDIN+1, &readfds, NULL, NULL, NULL); : printf("after select\n");
| k********r 发帖数: 18 | 3 又被耻笑了。
不过理清了一个概念。谢谢你。
【在 t****t 的大作中提到】 : select完了你不把数据拿走,当然下一次还是有啊!拿脚趾头想也知道啊。。。 : : 了。
|
|