0

我正在尝试select()2 个套接字。我有一个主循环和一组我是fd_set()fds 的。其中一个文件描述符在开始时是未知的,只有在我从另一个套接字获取 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))
    ...
}
4

1 回答 1

0

文件描述符只是整数。我建议您使用一个整数数组来存储文件描述符,并使用一个附加的 fd_number 变量来存储数组中描述符的数量。如果您只有 2 个,则可以将它们保存在单独的变量(a 和 b)中,并保留第三个变量来告诉您设置 a 或不设置的天气。

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))
        ...
}
于 2013-04-21T20:14:49.813 回答