| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 971 人关注过本帖
标题:用linux中的select函数监测有名管道,如果超时之前返回,那么tv值会发生变化 ...
取消只看楼主 加入收藏
jimylion
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-10-28
收藏
 问题点数:0 回复次数:0 
用linux中的select函数监测有名管道,如果超时之前返回,那么tv值会发生变化吗?
最近解决一个问题,用linux中的select函数检测有名管道中是否有数据可读,如果没有超时40ms,如果有就立即返回,然后继续做select监测,可是我需要用到tv值,tv值会发生变化吗?
程序代码:
int i;
fd_set rfds;
struct timeval tv;
while(1) 
{
tv.tv_sec = 0;          
tv.tv_usec = 40000; 
FD_ZERO(&rfds);
FD_SET(fid, &rfds); 
ret = select(fid+1, &rfds, NULL, NULL, &tv);
printf("tv=%d\n",tv.tv_usec);
if (ret > 0 && FD_ISSET(fid, &rfds))   
read(fid, &i, sizeof(int));
}


另一个线程会往管道里写数据,这里ret立即返回,可是网上说tv的值就是剩余时间,但是加打印看,每次返回ret后tv都是0,老师也说tv的值会变,可是还是有点怀疑,谁能帮我解释一下呢?或者我的程序有什么不对的地方需要改正?求救各位!谢谢啦
搜索更多相关主题的帖子: select linux 函数 管道 超时 
2010-10-28 19:50
快速回复:用linux中的select函数监测有名管道,如果超时之前返回,那么tv值会发 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021694 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved