- C/C++ code
while(true){ assert(errno==0);//这里取错误号等于0 int ret=select(nfds+1,&readFs,NULL,NULL,&timeOut); if( ret>0 ){ assert(errno==0x3d0002);//这里必然为0x3d0002(S_objLib_OBJ_UNAVAILABLE),这是为什么? read();//读数据一切正常 }}
X86主板,双网口,其他好像没有什么特殊了
------解决方案--------------------------------------------------------
有可能是信号量等待超时,设备读写超时,或是其它任何等待但没有得到正确反馈的原因引起的。
你把timeout设长一点试一下!
------解决方案--------------------------------------------------------
建议,select()之后不要直接就去读,最好先用FD_ISSET()判断是否是你要用的fd,然后再去read。
select的时候是检测的整个fd的区间,会把很多不是你要的fd也给检测进去。
这个errno还真不知道咋回事,有可能不影响使用的
------解决方案--------------------------------------------------------
mark下
------解决方案--------------------------------------------------------
Mark