select()関数とFD_ISSET呼び出しの使用の違いは何かを見つけようとしています。それらのいずれかを使用することを正当化するさまざまなシナリオは何ですか?
3 に答える
Anfd_setは、 への呼び出しで入力として使用されるビット配列selectです。
FD_ISSETで特定のビットが設定されているかどうかを確認するために使用されfd_setます。
selectに設定されているビットに対応するすべてのファイル記述子をポーリングするために使用されますfd_set。
一般的なシナリオは次のとおりです。
を作成してクリアしfd_setます。
監視するファイル記述子のビットを設定します。
コールセレクト。
FD_ISSETfor ループで呼び出します。特定のビットが設定されている場合、そのファイル記述子は読み取りの準備ができています (または書き込みまたはエラーがあります)。
selectUnix ライクなオペレーティング システムのシステム コールおよびアプリケーション プログラミング インターフェイスであり、開いている入出力チャネルのファイル記述子のステータスを調べることができます。したがって、select()関数は、指定されたファイル記述子のどれが読み取りの準備ができているか、書き込みの準備ができているか、または保留中のエラー状態を持っているかを示します。
FD_ISSETファイル記述子セット内のファイル記述子の値を返します。これはヘッダー ファイルで宣言されます<sys/time.h>。プロトタイプは、
int FD_ISSET(int fd, fd_set* fdset)
が指すファイル記述子セットにファイル記述子が設定されている場合はゼロ以外の値をfdset返し、それ以外の場合は 0 を返します。