我正在尝试select()
2个套接字。我有一个主循环和一组我{f}进入fd_set()
。其中一个文件描述符在开始时是未知的,只有在我从另一个套接字获得fd后,我知道第一个,对我来说只有1个主循环和1 select()
仍然很重要。
执行以下操作是否可行/良好实践:
a = -1; // IS THIS RIGHT TO GIVE -1 TO SELECT?
b = known_file_descriptor;
while(1)
{
fd_zero(set)
fd_set(set, a);
fd_set(set, b);
select(set,read,NULL,NULL,NULL)
if(is_Set(a))
...
if(is_set(b))
...
}
答案 0 :(得分:0)
文件描述符只是整数。我建议你使用一个整数数组来存储文件描述符,另外还有一个fd_number变量来存储数组中描述符的数量。如果你只有2个你可以将它们保存在单独的变量(a和b)中,并保留第三个变量来告诉你天气设置或不设置。
int a, b, a_is_known=0;
b = known_file_descriptor;
while(1)
{
fd_zero(set)
fd_set(set, b);
if (a_is_known) {
fd_set(set, a);
}
select(set,read,NULL,NULL,NULL)
if (a_is_known){
if(is_Set(a))
...
}
if(is_set(b))
...
}