0

我正在做这样的事情

val = select(max_fd+1,&readfd,0,0,0);
if(val >=1){
    printf("I have got some value");
}

我的代码无缘无故脱离了选择。它没有收到任何数据包。在 10 次运行中,我在等待选择的地方运行 1 次。休息它只是退出。

已设置套接字以接收 ICMP 数据包。在 1 次运行中,它运行良好。为什么这是废话9次?

4

2 回答 2

0

我的猜测是您的文件描述符在此过程中已关闭。在这种情况下val将为 -1 并errno设置为EBADF.

于 2014-04-01T08:18:25.637 回答
0

select()如果有错误返回 -1。请检查 的返回值select(),并检查errno返回值是否为-1。

于 2014-04-01T08:24:40.420 回答