0

私はselect()2つのソケットにしようとしています。メインループとfd_set()、fds が入っているセットがあります。ファイル記述子の 1 つは開始時に不明であり、他のソケットから fd を取得した後にのみ、最初の記述子がわかりました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)に保持し、3番目の変数を保持して、天気を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 に答える