免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 16054 | 回复: 21
打印 上一主题 下一主题

有没有办法取消select? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-28 20:58 |只看该作者 |倒序浏览
我想在某些条件下检测套接口能不能读(用select),某些条件下不用检测(必须取消掉select,)
请问该怎么做呢?
谢谢~

论坛徽章:
0
2 [报告]
发表于 2008-03-28 22:25 |只看该作者

回复 #1 darkslack 的帖子

没明白,具体点?

论坛徽章:
0
3 [报告]
发表于 2008-03-28 22:45 |只看该作者
比如:


fd_set rset;
FD_ZERO(&rset);
FD_SET(fd,&rset);
struct timeval tv={0,0};     select(fd+1,&rset,NULL,NULL,&tv)


然后就会监听fd是否有数据可以读,现在(其实是在某种条件下)我想取消对fd的监听,如何做?
谢谢~~

论坛徽章:
0
4 [报告]
发表于 2008-03-28 23:05 |只看该作者

回复 #3 darkslack 的帖子

建议定好一个合适的tv值,返回后不传入select即可.

[ 本帖最后由 system888net 于 2008-3-28 23:09 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2008-03-28 23:19 |只看该作者
有没有办法明确的取消监听呢?

论坛徽章:
0
6 [报告]
发表于 2008-03-28 23:29 |只看该作者

回复 #5 darkslack 的帖子

用close(fd)(有的系统不一定行)

对于select(fd+1,&rset,NULL,NULL,&tv) 若fd不用close则没有标准的方法,要根据具体系统查一下文档!

[ 本帖最后由 system888net 于 2008-3-28 23:35 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2008-03-29 00:12 |只看该作者
那有没有办法实现一定情况下监听,一定情况下取消监听呢?

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
8 [报告]
发表于 2008-03-29 09:23 |只看该作者
原帖由 darkslack 于 2008-3-29 00:12 发表
那有没有办法实现一定情况下监听,一定情况下取消监听呢?

有啊,发信号干掉select。

论坛徽章:
0
9 [报告]
发表于 2008-03-29 09:36 |只看该作者
发信号或者是创建一个管道,把管道加到select要检测的fd_set中,要取消的时候往管道写数据。。。

论坛徽章:
0
10 [报告]
发表于 2008-03-29 10:03 |只看该作者

回复 #9 foochow 的帖子

是一个方法,但我从来没敢这么用. 顶...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP