我正在做这样的事情
val = select(max_fd+1,&readfd,0,0,0);
if(val >=1){
printf("I have got some value");
}
我的代码无缘无故地突破了选择。它不接收任何数据包。在10次运行中,我得到1次运行,等待选择。休息它就退出了。
已设置套接字以接收ICMP数据包。在那一次运行中,它完美地运行。这为什么会被淘汰9次?
答案 0 :(得分:0)
我的猜测是你的文件描述符在这个过程中被关闭了。在这种情况下,val
将为-1,errno
将设置为EBADF
。
答案 1 :(得分:0)
select()
返回-1。
请检查select()
的返回值,如果返回值为-1,请检查errno
。