- 论坛徽章:
- 0
|
程序代码如下:
。。。;
FD_SET(fds[0],&inset1);
FD_SET(fds[1],&inset2);
。。。;
while(FD_ISSET(fds[0],&inset1)||FD_ISSET(fds[1],&inset2))
{
temp = select(maxfd+1,&inset1,&inset2,NULL,&tv);
printf("temp = %d\n",temp);//测试1
printf("fds[0] = %d\n",fds[0]);//测试2
printf("fds[1] = %d\n\n",fds[1]);//测试3
if(temp < 0)
{
perror("select");
}
else
{
if(FD_ISSET(fds[0],&inset1))
{
printf("1_isset_fds[0] = %d\n",FD_ISSET(fds[0],&inset1));//测试4
rc = read(fds[0],buf,7);
if(rc>0)
{
buf[rc]='\0';
printf("read: %s",buf);
}
else
{
perror("read");
}
printf("2_isset_fds[0] = %d\n\n",FD_ISSET(fds[0],&inset1));//测试5
}
if(FD_ISSET(fds[1],&inset2))
{
printf("2_isset_fds[1] = %d\n",FD_ISSET(fds[1],&inset2));//测试6
rc = write(fds[1],buf,7);
if(rc>0)
{
buf[rc]='\0';
printf("rc=%d,write: %s",rc,buf);
}
else
{
perror("write");
}
printf("2_isset_fds[1] = %d\n\n",FD_ISSET(fds[1],&inset2));//测试7
sleep(10);
}
}
}
/*
请教为什么 测试4 到 测试五 值会发生改变,而 测试6 到 测试7 的值却不变化 运行结果如下:
[root@localhost ju]# ./test
rc=7
temp = 2
fds[0] = 3
fds[1] = 4
1_isset_fds[0] = 1
read: Hello!
2_isset_fds[0] = 0
2_isset_fds[1] = 1
rc=7,write: Hello!
2_isset_fds[1] = 1
temp = 2
fds[0] = 0
fds[1] = 4
2_isset_fds[1] = 1
rc=7,write: Hello!
2_isset_fds[1] = 1
temp = 2
fds[0] = 0
fds[1] = 4
2_isset_fds[1] = 1
rc=7,write: Hello!
2_isset_fds[1] = 1
temp = 2
fds[0] = 0
fds[1] = 4
2_isset_fds[1] = 1
rc=7,write: Hello!
2_isset_fds[1] = 1
*/ |
|