- 论坛徽章:
- 0
|
我做了个小程序,这个程序在while(1)中,总是执行第二次select 时,就跳出,不知为何?请帮我分析一下,处处信息为:accept from outer
select is made !
close s6
s41 timeoff!
accept from outer
select is made !
close s6
select error
代码为:
fd_set connect_sock_set,wfd_set,efd_set,rfd_set;
struct timeval connect_sock_tv,connect_sock_tv1;
FD_ZERO(&rfd_set);
FD_SET(s32,&rfd_set);
connect_sock_tv1.tv_sec = 30;
connect_sock_tv1.tv_usec = 0;
j=select(s32+1,&rfd_set, 0, 0, &connect_sock_tv1);
if(j==0){
printf("s32 timeoff! \n");
close(s32);
return (0);
}
printf("select s32 time is over !\n");
if(j<0){
printf("select error !\n");
exit(-1);
}
alen=sizeof(server);
if((s2=accept(s32,(struct sockaddr*)&server,&alen))<0){
printf("MIDDLE accept from middle to reboot failed\n,%s\n",strerror(errno));
close(s2);
close(s32);
exit(-1);
}
printf("accept in halt() info from middle and prepare to reboot \n");
FD_ZERO(&connect_sock_set);
FD_SET(s2,&connect_sock_set);
connect_sock_tv.tv_sec = 30;
connect_sock_tv.tv_usec = 0;
i=select(s2+1,&connect_sock_set, 0, 0, &connect_sock_tv);
if(i==0){
printf("s2 timeoff! \n");
close(s2);
close(s32);
return (0);
}
printf("select s2 time is over !\n");
if(i<0){
printf("select error !\n");
exit(-1);
} |
|